BUG 0000 Adjustment in import process in PMTables and ReportTables.

This commit is contained in:
Hector Cortez
2011-07-21 10:41:58 -04:00
parent 284a4c3bfb
commit 5ce13dcfc7
2 changed files with 143 additions and 128 deletions

View File

@@ -1472,102 +1472,22 @@ var additionalTablesDataDelete = function(sUID, sKeys) {
} }
try { try {
switch (DB_ADAPTER) {
case 'mysql':
//select cases for this Process, ordered by APP_NUMBER
$oCriteria = new Criteria('workflow');
$oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUid);
$oCriteria->addAscendingOrderByColumn(ApplicationPeer::APP_NUMBER);
$oDataset = ApplicationPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aData = unserialize($aRow['APP_DATA']);
//delete previous record from this report table ( previous records in case this is a grid ) $tableExists = true;
$deleteSql = 'DELETE FROM `' . $sTableName . "` WHERE APP_UID = '" . $aRow['APP_UID'] . "'"; $sDataBase = 'database_' . strtolower(DB_ADAPTER);
$rsDel = $stmt->executeQuery( $deleteSql ); if(G::LoadSystemExist($sDataBase)){
if ($sType == 'NORMAL') { G::LoadSystem($sDataBase);
$sQuery = 'INSERT INTO `' . $sTableName . '` ('; $oDataBase = new database();
$sQuery .= '`APP_UID`,`APP_NUMBER`'; $sDataBase = $sConnection;
if($sDataBase == 'workflow')
$sDataBase = DB_NAME;
$tableExists = $oDataBase->tableExists($sTableName, $sDataBase);
}
if($tableExists) {
foreach ($aFields as $aField) { switch (DB_ADAPTER) {
if ($aField['FLD_NAME'] != 'APP_UID' && $aField['FLD_NAME'] != 'APP_NUMBER' && $aField['FLD_NAME'] != 'ROW') case 'mysql':
$sQuery .= ',`' . $aField['FLD_NAME'] . '`'; //select cases for this Process, ordered by APP_NUMBER
}
$sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER'];
foreach ($aFields as $aField) {
if ($aField['FLD_NAME'] == 'APP_UID' || $aField['FLD_NAME'] == 'APP_NUMBER' || $aField['FLD_NAME'] == 'ROW') continue;
switch ($aField['FLD_TYPE']) {
case 'INT':
case 'FLOAT':
$sQuery .= ',' . (isset($aData[$aField['FLD_DYN_NAME']]) ? (float)str_replace(',', '', $aData[$aField['FLD_DYN_NAME']]) : '0');
break;
case 'VARCHAR':
case 'TEXT':
if (!isset($aData[$aField['FLD_NAME']])) {
$aData[$aField['FLD_NAME']] = '';
}
$sQuery .= ",'" . (isset($aData[$aField['FLD_DYN_NAME']]) ? mysql_real_escape_string($aData[$aField['FLD_DYN_NAME']]) : '') . "'";
break;
case 'DATE':
$value = (isset($aData[$aField['FLD_DYN_NAME']]) && trim($aData[$aField['FLD_DYN_NAME']])) != '' ? "'" . $aData[$aField['FLD_DYN_NAME']] . "'" : 'NULL';
$sQuery .= "," . $value;
break;
}
}
$sQuery .= ')';
$rs = $stmt->executeQuery( $sQuery );
}
else {
if (isset($aData[$sGrid])) {
foreach ($aData[$sGrid] as $iRow => $aGridRow) {
$sQuery = 'INSERT INTO `' . $sTableName . '` (';
$sQuery .= '`APP_UID`,`APP_NUMBER`,`ROW`';
foreach ($aFields as $aField) {
if ($aField['FLD_NAME'] != 'APP_UID' && $aField['FLD_NAME'] != 'APP_NUMBER' && $aField['FLD_NAME'] != 'ROW')
$sQuery .= ',`' . $aField['FLD_NAME'] . '`';
}
$sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER'] . ',' . $iRow;
foreach ($aFields as $aField) {
if ($aField['FLD_NAME'] != 'APP_UID' || $aField['FLD_NAME'] != 'APP_NUMBER' || $aField['FLD_NAME'] != 'ROW') continue;
switch ($aField['FLD_TYPE']) {
case 'INT':
case 'FLOAT':
$sQuery .= ',' . (isset($aGridRow[$aField['FLD_NAME']]) ? (float)str_replace(',', '', $aGridRow[$aField['FLD_NAME']]) : '0');
break;
case 'VARCHAR':
case 'TEXT':
if (!isset($aGridRow[$aField['FLD_NAME']])) {
$aGridRow[$aField['FLD_NAME']] = '';
}
$sQuery .= ",'" . (isset($aGridRow[$aField['FLD_NAME']]) ? mysql_real_escape_string($aGridRow[$aField['FLD_NAME']]) : '') . "'";
break;
case 'DATE':
$value = (isset($aGridRow[$aField['FLD_NAME']]) && trim($aGridRow[$aField['FLD_NAME']])) != '' ? "'" . $aGridRow[$aField['FLD_NAME']] . "'" : 'NULL';
$sQuery .= "," . $value;
break;
}
}
$sQuery .= ')';
$rs = $stmt->executeQuery( $sQuery );
}
}
}
$oDataset->next();
}
break;
/**
* For SQLServer code
*/
case 'mssql':
$oCriteria = new Criteria('workflow'); $oCriteria = new Criteria('workflow');
$oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUid); $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUid);
$oCriteria->addAscendingOrderByColumn(ApplicationPeer::APP_NUMBER); $oCriteria->addAscendingOrderByColumn(ApplicationPeer::APP_NUMBER);
@@ -1576,58 +1496,76 @@ var additionalTablesDataDelete = function(sUID, sKeys) {
$oDataset->next(); $oDataset->next();
while ($aRow = $oDataset->getRow()) { while ($aRow = $oDataset->getRow()) {
$aData = unserialize($aRow['APP_DATA']); $aData = unserialize($aRow['APP_DATA']);
mysql_query('DELETE FROM [' . $sTableName . "] WHERE APP_UID = '" . $aRow['APP_UID'] . "'");
//delete previous record from this report table ( previous records in case this is a grid )
$deleteSql = 'DELETE FROM `' . $sTableName . "` WHERE APP_UID = '" . $aRow['APP_UID'] . "'";
$rsDel = $stmt->executeQuery( $deleteSql );
if ($sType == 'NORMAL') { if ($sType == 'NORMAL') {
$sQuery = 'INSERT INTO [' . $sTableName . '] ('; $sQuery = 'INSERT INTO `' . $sTableName . '` (';
$sQuery .= '[APP_UID],[APP_NUMBER]'; $sQuery .= '`APP_UID`,`APP_NUMBER`';
foreach ($aFields as $aField) { foreach ($aFields as $aField) {
$sQuery .= ',[' . $aField['sFieldName'] . ']'; if ($aField['FLD_NAME'] != 'APP_UID' && $aField['FLD_NAME'] != 'APP_NUMBER' && $aField['FLD_NAME'] != 'ROW')
$sQuery .= ',`' . $aField['FLD_NAME'] . '`';
} }
$sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER']; $sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER'];
foreach ($aFields as $aField) { foreach ($aFields as $aField) {
switch ($aField['sType']) { if ($aField['FLD_NAME'] == 'APP_UID' || $aField['FLD_NAME'] == 'APP_NUMBER' || $aField['FLD_NAME'] == 'ROW') continue;
case 'number':
$sQuery .= ',' . (isset($aData[$aField['sFieldName']]) ? (float)str_replace(',', '', $aData[$aField['sFieldName']]) : '0'); switch ($aField['FLD_TYPE']) {
break; case 'INT':
case 'char': case 'FLOAT':
case 'text': $sQuery .= ',' . (isset($aData[$aField['FLD_DYN_NAME']]) ? (float)str_replace(',', '', $aData[$aField['FLD_DYN_NAME']]) : '0');
if (!isset($aData[$aField['sFieldName']])) { break;
$aData[$aField['sFieldName']] = ''; case 'VARCHAR':
case 'TEXT':
if (!isset($aData[$aField['FLD_NAME']])) {
$aData[$aField['FLD_NAME']] = '';
} }
$sQuery .= ",'" . (isset($aData[$aField['sFieldName']]) ? mysql_real_escape_string($aData[$aField['sFieldName']]) : '') . "'"; $sQuery .= ",'" . (isset($aData[$aField['FLD_DYN_NAME']]) ? mysql_real_escape_string($aData[$aField['FLD_DYN_NAME']]) : '') . "'";
break; break;
case 'date': case 'DATE':
$sQuery .= ",'" . (isset($aData[$aField['sFieldName']]) ? $aData[$aField['sFieldName']] : '') . "'"; $value = (isset($aData[$aField['FLD_DYN_NAME']]) && trim($aData[$aField['FLD_DYN_NAME']])) != '' ? "'" . $aData[$aField['FLD_DYN_NAME']] . "'" : 'NULL';
break; $sQuery .= "," . $value;
break;
} }
} }
$sQuery .= ')'; $sQuery .= ')';
$rs = $stmt->executeQuery( $sQuery ); $rs = $stmt->executeQuery( $sQuery );
} }
else { else {
if (isset($aData[$sGrid])) { if (isset($aData[$sGrid])) {
foreach ($aData[$sGrid] as $iRow => $aGridRow) { foreach ($aData[$sGrid] as $iRow => $aGridRow) {
$sQuery = 'INSERT INTO [' . $sTableName . '] ('; $sQuery = 'INSERT INTO `' . $sTableName . '` (';
$sQuery .= '`APP_UID`,`APP_NUMBER`,`ROW`'; $sQuery .= '`APP_UID`,`APP_NUMBER`,`ROW`';
foreach ($aFields as $aField) { foreach ($aFields as $aField) {
$sQuery .= ',[' . $aField['sFieldName'] . ']'; if ($aField['FLD_NAME'] != 'APP_UID' && $aField['FLD_NAME'] != 'APP_NUMBER' && $aField['FLD_NAME'] != 'ROW')
$sQuery .= ',`' . $aField['FLD_NAME'] . '`';
} }
$sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER'] . ',' . $iRow; $sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER'] . ',' . $iRow;
foreach ($aFields as $aField) { foreach ($aFields as $aField) {
switch ($aField['sType']) { if ($aField['FLD_NAME'] != 'APP_UID' || $aField['FLD_NAME'] != 'APP_NUMBER' || $aField['FLD_NAME'] != 'ROW') continue;
case 'number':
$sQuery .= ',' . (isset($aGridRow[$aField['sFieldName']]) ? (float)str_replace(',', '', $aGridRow[$aField['sFieldName']]) : '0'); switch ($aField['FLD_TYPE']) {
break; case 'INT':
case 'char': case 'FLOAT':
case 'text': $sQuery .= ',' . (isset($aGridRow[$aField['FLD_NAME']]) ? (float)str_replace(',', '', $aGridRow[$aField['FLD_NAME']]) : '0');
if (!isset($aGridRow[$aField['sFieldName']])) { break;
$aGridRow[$aField['sFieldName']] = ''; case 'VARCHAR':
case 'TEXT':
if (!isset($aGridRow[$aField['FLD_NAME']])) {
$aGridRow[$aField['FLD_NAME']] = '';
} }
$sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? mysql_real_escape_string($aGridRow[$aField['sFieldName']]) : '') . "'"; $sQuery .= ",'" . (isset($aGridRow[$aField['FLD_NAME']]) ? mysql_real_escape_string($aGridRow[$aField['FLD_NAME']]) : '') . "'";
break; break;
case 'date': case 'DATE':
$sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? $aGridRow[$aField['sFieldName']] : '') . "'"; $value = (isset($aGridRow[$aField['FLD_NAME']]) && trim($aGridRow[$aField['FLD_NAME']])) != '' ? "'" . $aGridRow[$aField['FLD_NAME']] . "'" : 'NULL';
break; $sQuery .= "," . $value;
break;
} }
} }
$sQuery .= ')'; $sQuery .= ')';
@@ -1637,8 +1575,84 @@ var additionalTablesDataDelete = function(sUID, sKeys) {
} }
$oDataset->next(); $oDataset->next();
} }
break; break;
/**
* For SQLServer code
*/
case 'mssql':
$oCriteria = new Criteria('workflow');
$oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUid);
$oCriteria->addAscendingOrderByColumn(ApplicationPeer::APP_NUMBER);
$oDataset = ApplicationPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
$aData = unserialize($aRow['APP_DATA']);
mysql_query('DELETE FROM [' . $sTableName . "] WHERE APP_UID = '" . $aRow['APP_UID'] . "'");
if ($sType == 'NORMAL') {
$sQuery = 'INSERT INTO [' . $sTableName . '] (';
$sQuery .= '[APP_UID],[APP_NUMBER]';
foreach ($aFields as $aField) {
$sQuery .= ',[' . $aField['sFieldName'] . ']';
}
$sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER'];
foreach ($aFields as $aField) {
switch ($aField['sType']) {
case 'number':
$sQuery .= ',' . (isset($aData[$aField['sFieldName']]) ? (float)str_replace(',', '', $aData[$aField['sFieldName']]) : '0');
break;
case 'char':
case 'text':
if (!isset($aData[$aField['sFieldName']])) {
$aData[$aField['sFieldName']] = '';
}
$sQuery .= ",'" . (isset($aData[$aField['sFieldName']]) ? mysql_real_escape_string($aData[$aField['sFieldName']]) : '') . "'";
break;
case 'date':
$sQuery .= ",'" . (isset($aData[$aField['sFieldName']]) ? $aData[$aField['sFieldName']] : '') . "'";
break;
}
}
$sQuery .= ')';
$rs = $stmt->executeQuery( $sQuery );
}
else {
if (isset($aData[$sGrid])) {
foreach ($aData[$sGrid] as $iRow => $aGridRow) {
$sQuery = 'INSERT INTO [' . $sTableName . '] (';
$sQuery .= '`APP_UID`,`APP_NUMBER`,`ROW`';
foreach ($aFields as $aField) {
$sQuery .= ',[' . $aField['sFieldName'] . ']';
}
$sQuery .= ") VALUES ('" . $aRow['APP_UID'] . "'," . (int)$aRow['APP_NUMBER'] . ',' . $iRow;
foreach ($aFields as $aField) {
switch ($aField['sType']) {
case 'number':
$sQuery .= ',' . (isset($aGridRow[$aField['sFieldName']]) ? (float)str_replace(',', '', $aGridRow[$aField['sFieldName']]) : '0');
break;
case 'char':
case 'text':
if (!isset($aGridRow[$aField['sFieldName']])) {
$aGridRow[$aField['sFieldName']] = '';
}
$sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? mysql_real_escape_string($aGridRow[$aField['sFieldName']]) : '') . "'";
break;
case 'date':
$sQuery .= ",'" . (isset($aGridRow[$aField['sFieldName']]) ? $aGridRow[$aField['sFieldName']] : '') . "'";
break;
}
}
$sQuery .= ')';
$rs = $stmt->executeQuery( $sQuery );
}
}
}
$oDataset->next();
}
break;
}
} }
} }
catch (Exception $oError) { catch (Exception $oError) {

View File

@@ -570,6 +570,7 @@ class pmTablesProxy extends HttpProxyController
if($tRecord){ if($tRecord){
$tNameOld = $contentSchema['ADD_TAB_NAME']; $tNameOld = $contentSchema['ADD_TAB_NAME'];
$contentSchema['ADD_TAB_UID'] = G::generateUniqueID();
$contentSchema['ADD_TAB_NAME'] = "{$contentSchema['ADD_TAB_NAME']}".sizeof($tRecord); $contentSchema['ADD_TAB_NAME'] = "{$contentSchema['ADD_TAB_NAME']}".sizeof($tRecord);
$contentSchema['ADD_TAB_CLASS_NAME'] = "{$contentSchema['ADD_TAB_CLASS_NAME']}".sizeof($tRecord); $contentSchema['ADD_TAB_CLASS_NAME'] = "{$contentSchema['ADD_TAB_CLASS_NAME']}".sizeof($tRecord);
$oMap->addRoute($tNameOld, $contentSchema['ADD_TAB_NAME']); $oMap->addRoute($tNameOld, $contentSchema['ADD_TAB_NAME']);
@@ -627,7 +628,7 @@ class pmTablesProxy extends HttpProxyController
$isReportTable = $contentSchema['PRO_UID'] != '' ? true : false; $isReportTable = $contentSchema['PRO_UID'] != '' ? true : false;
if ($isReportTable) { if ($isReportTable) {
$oAdditionalTables->populateReportTable($contentSchema['ADD_TAB_NAME'], $contentSchema['ADD_TAB_CONNECTION'], $contentSchema['ADD_TAB_TYPE'], $contentSchema['FIELDS'], $contentSchema['ADD_UID'], $contentSchema['ADD_TAB_GRID']); $oAdditionalTables->populateReportTable($contentSchema['ADD_TAB_NAME'], $contentSchema['DBS_UID'], $contentSchema['ADD_TAB_TYPE'], $contentSchema['FIELDS'], $contentSchema['PRO_UID'], $contentSchema['ADD_TAB_GRID']);
} }
break; break;