PM-854 "[16221] En Case History no muestra los datos de las..." SOLVED

Issue:
    En "Cases History" no se reflejan las variables generadas por los triggers
    asignados al Task (esto en Task>Steps>Triggers>AssignTask)
Cause:
    Nuevo requerimiento de funciones
Solution:
    - Se ha implementado esta nueva funcionalidad
    - Las variables generadas en los triggers que se setean en "Task>Steps>Triggers"
      para DynaForms, InputDocuments and OutputDocuments ahora son registrados en la
      tabla APP_HISTORY
This commit is contained in:
Victor Saisa Lopez
2014-11-10 15:40:24 -04:00
parent 6fdc9e8354
commit ecacf6d15a
14 changed files with 369 additions and 222 deletions

View File

@@ -5087,7 +5087,7 @@ class Cases
$RESULT_OBJECTS['CASES_NOTES'] = G::arrayDiff(
$MAIN_OBJECTS['VIEW']['CASES_NOTES'], $MAIN_OBJECTS['BLOCK']['CASES_NOTES']
);
array_push($RESULT_OBJECTS['DYNAFORMS'], -1);
array_push($RESULT_OBJECTS["DYNAFORMS"], -1, -2);
array_push($RESULT_OBJECTS['INPUT_DOCUMENTS'], -1);
array_push($RESULT_OBJECTS['OUTPUT_DOCUMENTS'], -1);
array_push($RESULT_OBJECTS['CASES_NOTES'], -1);
@@ -5244,10 +5244,16 @@ class Cases
$oDataset->next();
}
//inputs
//InputDocuments and OutputDocuments
$oCriteria = new Criteria('workflow');
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
$oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
$arrayCondition = array();
$arrayCondition[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::EQUAL);
$arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);
$oCriteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
$oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
$oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
if ($aCase['APP_STATUS'] != 'COMPLETED') {
@@ -5261,23 +5267,21 @@ class Cases
addOr($oCriteria->
getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))
);
$aConditions = Array();
$aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);
$aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);
$oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
$oDataset = DynaformPeer::doSelectRS($oCriteria);
$oDataset = AppDelegationPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
while ($oDataset->next()) {
$aRow = $oDataset->getRow();
if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {
$aRow['APP_DOC_TYPE'] = "INPUT";
}
if (!in_array($aRow['APP_DOC_UID'], $RESULT[$aRow['APP_DOC_TYPE']])) {
array_push($RESULT[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);
}
$oDataset->next();
}
$RESULT['CASES_NOTES'] = 1;
$RESULT['SUMMARY_FORM'] = 1;

View File

@@ -32,6 +32,10 @@ class AppHistory extends BaseAppHistory
$this->setHistoryDate($aData['APP_UPDATE_DATE']);
$this->setHistoryData($aData['APP_DATA']);
if (isset($aData["OBJECT_TYPE"])) {
$this->setObjType($aData["OBJECT_TYPE"]);
}
if ($this->validate() ) {
$res = $this->save();
} else {
@@ -78,12 +82,36 @@ class AppHistory extends BaseAppHistory
}
}
$appDocument = new AppDocument();
foreach (array("INPUT_DOCUMENTS", "OUTPUT_DOCUMENTS") as $value) {
$key = $value;
if ($aObjectPermissions[$key]) {
foreach ($aObjectPermissions[$key] as $key2 => $value2) {
$appDocumentUid = $value2;
try {
$arrayAppDocumentData = $appDocument->load($appDocumentUid);
$aObjectPermissions[$key][$key2] = $arrayAppDocumentData["DOC_UID"];
} catch (Exception $e) {
}
}
}
}
$dynaForm = new Dynaform();
$inputDocument = new InputDocument();
$outputDocument = new OutputDocument();
$c = new Criteria('workflow');
$c->addSelectColumn(AppHistoryPeer::APP_UID);
$c->addSelectColumn(AppHistoryPeer::DEL_INDEX);
$c->addSelectColumn(AppHistoryPeer::PRO_UID);
$c->addSelectColumn(AppHistoryPeer::TAS_UID);
$c->addSelectColumn(AppHistoryPeer::DYN_UID);
$c->addSelectColumn(AppHistoryPeer::OBJ_TYPE);
$c->addSelectColumn(AppHistoryPeer::USR_UID);
$c->addSelectColumn(AppHistoryPeer::APP_STATUS);
$c->addSelectColumn(AppHistoryPeer::HISTORY_DATE);
@@ -94,31 +122,55 @@ class AppHistory extends BaseAppHistory
$c->addJoin(AppHistoryPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
//WHERE
$c->add(AppHistoryPeer::DYN_UID, $aObjectPermissions['DYNAFORMS'], Criteria::IN);
$c->add(
$c->getNewCriterion(AppHistoryPeer::DYN_UID, $aObjectPermissions["DYNAFORMS"], Criteria::IN)->addOr(
$c->getNewCriterion(AppHistoryPeer::DYN_UID, $aObjectPermissions["INPUT_DOCUMENTS"], Criteria::IN))->addOr(
$c->getNewCriterion(AppHistoryPeer::DYN_UID, $aObjectPermissions["OUTPUT_DOCUMENTS"], Criteria::IN))
);
$c->add(AppHistoryPeer::PRO_UID, $PRO_UID);
$c->add(AppHistoryPeer::APP_UID, $APP_UID);
if ((isset($DYN_UID))&&($DYN_UID!="")) {
$c->add(AppHistoryPeer::DYN_UID, $DYN_UID);
}
//ORDER BY
$c->clearOrderByColumns();
$c->addDescendingOrderByColumn(AppHistoryPeer::HISTORY_DATE);
//Execute
$oDataset = AppHistoryPeer::doSelectRS($c);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$aDynHistory = array();
$aDynHistory[] = array(
'DYN_TITLE' => 'char'
);
while ($aRow = $oDataset->getRow()) {
$o = new Dynaform();
$o->setDynUid($aRow['DYN_UID']);
$aRow['DYN_TITLE'] = $o->getDynTitle();
while ($oDataset->next()) {
$aRow = $oDataset->getRow();
$title = "";
switch ($aRow["OBJ_TYPE"]) {
case "DYNAFORM":
$arrayDynaFormData = $dynaForm->Load($aRow["DYN_UID"]);
$title = $arrayDynaFormData["DYN_TITLE"] . " (" . G::LoadTranslation("ID_DYNAFORM") . ")";
break;
case "INPUT_DOCUMENT":
$arrayInputDocumentData = $inputDocument->load($aRow["DYN_UID"]);
$title = $arrayInputDocumentData["INP_DOC_TITLE"] . " (" . G::LoadTranslation("ID_INPUT_DOCUMENT") . ")";
break;
case "OUTPUT_DOCUMENT":
$arrayOutputDocumentData = $outputDocument->load($aRow["DYN_UID"]);
$title = $arrayOutputDocumentData["OUT_DOC_TITLE"] . " (" . G::LoadTranslation("ID_OUTPUT_DOCUMENT") . ")";
break;
case "ASSIGN_TASK":
$title = G::LoadTranslation("ASSIGN_TASK") . " (" . G::LoadTranslation("ID_TRIGGERS") . ")";
break;
}
$aRow["DYN_TITLE"] = $title;
$changedValues=unserialize($aRow['HISTORY_DATA']);
$html="<table border='0' cellpadding='0' cellspacing='0'>";
$sw_add=false;
@@ -166,7 +218,6 @@ class AppHistory extends BaseAppHistory
if ($sw_add) {
$aDynHistory[] = $aRow;
}
$oDataset->next();
}
global $_DBArray;
@@ -175,7 +226,8 @@ class AppHistory extends BaseAppHistory
G::LoadClass('ArrayPeer');
$oCriteria = new Criteria('dbarray');
$oCriteria->setDBArrayTable('DynaformsHistory');
$oCriteria->addDescendingOrderByColumn(AppHistoryPeer::HISTORY_DATE);
$oCriteria->addAscendingOrderByColumn(AppHistoryPeer::HISTORY_DATE);
return $oCriteria;
}
}

View File

@@ -75,6 +75,8 @@ class AppHistoryMapBuilder
$tMap->addColumn('DYN_UID', 'DynUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('OBJ_TYPE', 'ObjType', 'string', CreoleTypes::VARCHAR, true, 20);
$tMap->addColumn('USR_UID', 'UsrUid', 'string', CreoleTypes::VARCHAR, true, 32);
$tMap->addColumn('APP_STATUS', 'AppStatus', 'string', CreoleTypes::VARCHAR, true, 100);
@@ -83,6 +85,8 @@ class AppHistoryMapBuilder
$tMap->addColumn('HISTORY_DATA', 'HistoryData', 'string', CreoleTypes::LONGVARCHAR, true, null);
$tMap->addValidator('OBJ_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'DYNAFORM|INPUT_DOCUMENT|OUTPUT_DOCUMENT|EXTERNAL|ASSIGN_TASK', 'Please select a valid value for OBJ_TYPE.');
} // doBuild()
} // AppHistoryMapBuilder

View File

@@ -57,6 +57,12 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
*/
protected $dyn_uid = '';
/**
* The value for the obj_type field.
* @var string
*/
protected $obj_type = 'DYNAFORM';
/**
* The value for the usr_uid field.
* @var string
@@ -150,6 +156,17 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
return $this->dyn_uid;
}
/**
* Get the [obj_type] column value.
*
* @return string
*/
public function getObjType()
{
return $this->obj_type;
}
/**
* Get the [usr_uid] column value.
*
@@ -325,6 +342,28 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
} // setDynUid()
/**
* Set the value of [obj_type] column.
*
* @param string $v new value
* @return void
*/
public function setObjType($v)
{
// Since the native PHP type for this column is string,
// we will cast the input to a string (if it is not).
if ($v !== null && !is_string($v)) {
$v = (string) $v;
}
if ($this->obj_type !== $v || $v === 'DYNAFORM') {
$this->obj_type = $v;
$this->modifiedColumns[] = AppHistoryPeer::OBJ_TYPE;
}
} // setObjType()
/**
* Set the value of [usr_uid] column.
*
@@ -447,20 +486,22 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
$this->dyn_uid = $rs->getString($startcol + 4);
$this->usr_uid = $rs->getString($startcol + 5);
$this->obj_type = $rs->getString($startcol + 5);
$this->app_status = $rs->getString($startcol + 6);
$this->usr_uid = $rs->getString($startcol + 6);
$this->history_date = $rs->getTimestamp($startcol + 7, null);
$this->app_status = $rs->getString($startcol + 7);
$this->history_data = $rs->getString($startcol + 8);
$this->history_date = $rs->getTimestamp($startcol + 8, null);
$this->history_data = $rs->getString($startcol + 9);
$this->resetModified();
$this->setNew(false);
// FIXME - using NUM_COLUMNS may be clearer.
return $startcol + 9; // 9 = AppHistoryPeer::NUM_COLUMNS - AppHistoryPeer::NUM_LAZY_LOAD_COLUMNS).
return $startcol + 10; // 10 = AppHistoryPeer::NUM_COLUMNS - AppHistoryPeer::NUM_LAZY_LOAD_COLUMNS).
} catch (Exception $e) {
throw new PropelException("Error populating AppHistory object", $e);
@@ -680,15 +721,18 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
return $this->getDynUid();
break;
case 5:
return $this->getUsrUid();
return $this->getObjType();
break;
case 6:
return $this->getAppStatus();
return $this->getUsrUid();
break;
case 7:
return $this->getHistoryDate();
return $this->getAppStatus();
break;
case 8:
return $this->getHistoryDate();
break;
case 9:
return $this->getHistoryData();
break;
default:
@@ -716,10 +760,11 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
$keys[2] => $this->getProUid(),
$keys[3] => $this->getTasUid(),
$keys[4] => $this->getDynUid(),
$keys[5] => $this->getUsrUid(),
$keys[6] => $this->getAppStatus(),
$keys[7] => $this->getHistoryDate(),
$keys[8] => $this->getHistoryData(),
$keys[5] => $this->getObjType(),
$keys[6] => $this->getUsrUid(),
$keys[7] => $this->getAppStatus(),
$keys[8] => $this->getHistoryDate(),
$keys[9] => $this->getHistoryData(),
);
return $result;
}
@@ -767,15 +812,18 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
$this->setDynUid($value);
break;
case 5:
$this->setUsrUid($value);
$this->setObjType($value);
break;
case 6:
$this->setAppStatus($value);
$this->setUsrUid($value);
break;
case 7:
$this->setHistoryDate($value);
$this->setAppStatus($value);
break;
case 8:
$this->setHistoryDate($value);
break;
case 9:
$this->setHistoryData($value);
break;
} // switch()
@@ -822,19 +870,23 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
}
if (array_key_exists($keys[5], $arr)) {
$this->setUsrUid($arr[$keys[5]]);
$this->setObjType($arr[$keys[5]]);
}
if (array_key_exists($keys[6], $arr)) {
$this->setAppStatus($arr[$keys[6]]);
$this->setUsrUid($arr[$keys[6]]);
}
if (array_key_exists($keys[7], $arr)) {
$this->setHistoryDate($arr[$keys[7]]);
$this->setAppStatus($arr[$keys[7]]);
}
if (array_key_exists($keys[8], $arr)) {
$this->setHistoryData($arr[$keys[8]]);
$this->setHistoryDate($arr[$keys[8]]);
}
if (array_key_exists($keys[9], $arr)) {
$this->setHistoryData($arr[$keys[9]]);
}
}
@@ -868,6 +920,10 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
$criteria->add(AppHistoryPeer::DYN_UID, $this->dyn_uid);
}
if ($this->isColumnModified(AppHistoryPeer::OBJ_TYPE)) {
$criteria->add(AppHistoryPeer::OBJ_TYPE, $this->obj_type);
}
if ($this->isColumnModified(AppHistoryPeer::USR_UID)) {
$criteria->add(AppHistoryPeer::USR_UID, $this->usr_uid);
}
@@ -951,6 +1007,8 @@ abstract class BaseAppHistory extends BaseObject implements Persistent
$copyObj->setDynUid($this->dyn_uid);
$copyObj->setObjType($this->obj_type);
$copyObj->setUsrUid($this->usr_uid);
$copyObj->setAppStatus($this->app_status);

View File

@@ -25,7 +25,7 @@ abstract class BaseAppHistoryPeer
const CLASS_DEFAULT = 'classes.model.AppHistory';
/** The total number of columns. */
const NUM_COLUMNS = 9;
const NUM_COLUMNS = 10;
/** The number of lazy-loaded columns. */
const NUM_LAZY_LOAD_COLUMNS = 0;
@@ -46,6 +46,9 @@ abstract class BaseAppHistoryPeer
/** the column name for the DYN_UID field */
const DYN_UID = 'APP_HISTORY.DYN_UID';
/** the column name for the OBJ_TYPE field */
const OBJ_TYPE = 'APP_HISTORY.OBJ_TYPE';
/** the column name for the USR_UID field */
const USR_UID = 'APP_HISTORY.USR_UID';
@@ -69,10 +72,10 @@ abstract class BaseAppHistoryPeer
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
private static $fieldNames = array (
BasePeer::TYPE_PHPNAME => array ('AppUid', 'DelIndex', 'ProUid', 'TasUid', 'DynUid', 'UsrUid', 'AppStatus', 'HistoryDate', 'HistoryData', ),
BasePeer::TYPE_COLNAME => array (AppHistoryPeer::APP_UID, AppHistoryPeer::DEL_INDEX, AppHistoryPeer::PRO_UID, AppHistoryPeer::TAS_UID, AppHistoryPeer::DYN_UID, AppHistoryPeer::USR_UID, AppHistoryPeer::APP_STATUS, AppHistoryPeer::HISTORY_DATE, AppHistoryPeer::HISTORY_DATA, ),
BasePeer::TYPE_FIELDNAME => array ('APP_UID', 'DEL_INDEX', 'PRO_UID', 'TAS_UID', 'DYN_UID', 'USR_UID', 'APP_STATUS', 'HISTORY_DATE', 'HISTORY_DATA', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, )
BasePeer::TYPE_PHPNAME => array ('AppUid', 'DelIndex', 'ProUid', 'TasUid', 'DynUid', 'ObjType', 'UsrUid', 'AppStatus', 'HistoryDate', 'HistoryData', ),
BasePeer::TYPE_COLNAME => array (AppHistoryPeer::APP_UID, AppHistoryPeer::DEL_INDEX, AppHistoryPeer::PRO_UID, AppHistoryPeer::TAS_UID, AppHistoryPeer::DYN_UID, AppHistoryPeer::OBJ_TYPE, AppHistoryPeer::USR_UID, AppHistoryPeer::APP_STATUS, AppHistoryPeer::HISTORY_DATE, AppHistoryPeer::HISTORY_DATA, ),
BasePeer::TYPE_FIELDNAME => array ('APP_UID', 'DEL_INDEX', 'PRO_UID', 'TAS_UID', 'DYN_UID', 'OBJ_TYPE', 'USR_UID', 'APP_STATUS', 'HISTORY_DATE', 'HISTORY_DATA', ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
);
/**
@@ -82,10 +85,10 @@ abstract class BaseAppHistoryPeer
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
*/
private static $fieldKeys = array (
BasePeer::TYPE_PHPNAME => array ('AppUid' => 0, 'DelIndex' => 1, 'ProUid' => 2, 'TasUid' => 3, 'DynUid' => 4, 'UsrUid' => 5, 'AppStatus' => 6, 'HistoryDate' => 7, 'HistoryData' => 8, ),
BasePeer::TYPE_COLNAME => array (AppHistoryPeer::APP_UID => 0, AppHistoryPeer::DEL_INDEX => 1, AppHistoryPeer::PRO_UID => 2, AppHistoryPeer::TAS_UID => 3, AppHistoryPeer::DYN_UID => 4, AppHistoryPeer::USR_UID => 5, AppHistoryPeer::APP_STATUS => 6, AppHistoryPeer::HISTORY_DATE => 7, AppHistoryPeer::HISTORY_DATA => 8, ),
BasePeer::TYPE_FIELDNAME => array ('APP_UID' => 0, 'DEL_INDEX' => 1, 'PRO_UID' => 2, 'TAS_UID' => 3, 'DYN_UID' => 4, 'USR_UID' => 5, 'APP_STATUS' => 6, 'HISTORY_DATE' => 7, 'HISTORY_DATA' => 8, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, )
BasePeer::TYPE_PHPNAME => array ('AppUid' => 0, 'DelIndex' => 1, 'ProUid' => 2, 'TasUid' => 3, 'DynUid' => 4, 'ObjType' => 5, 'UsrUid' => 6, 'AppStatus' => 7, 'HistoryDate' => 8, 'HistoryData' => 9, ),
BasePeer::TYPE_COLNAME => array (AppHistoryPeer::APP_UID => 0, AppHistoryPeer::DEL_INDEX => 1, AppHistoryPeer::PRO_UID => 2, AppHistoryPeer::TAS_UID => 3, AppHistoryPeer::DYN_UID => 4, AppHistoryPeer::OBJ_TYPE => 5, AppHistoryPeer::USR_UID => 6, AppHistoryPeer::APP_STATUS => 7, AppHistoryPeer::HISTORY_DATE => 8, AppHistoryPeer::HISTORY_DATA => 9, ),
BasePeer::TYPE_FIELDNAME => array ('APP_UID' => 0, 'DEL_INDEX' => 1, 'PRO_UID' => 2, 'TAS_UID' => 3, 'DYN_UID' => 4, 'OBJ_TYPE' => 5, 'USR_UID' => 6, 'APP_STATUS' => 7, 'HISTORY_DATE' => 8, 'HISTORY_DATA' => 9, ),
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, )
);
/**
@@ -196,6 +199,8 @@ abstract class BaseAppHistoryPeer
$criteria->addSelectColumn(AppHistoryPeer::DYN_UID);
$criteria->addSelectColumn(AppHistoryPeer::OBJ_TYPE);
$criteria->addSelectColumn(AppHistoryPeer::USR_UID);
$criteria->addSelectColumn(AppHistoryPeer::APP_STATUS);
@@ -542,6 +547,9 @@ abstract class BaseAppHistoryPeer
}
} else {
if ($obj->isNew() || $obj->isColumnModified(AppHistoryPeer::OBJ_TYPE))
$columns[AppHistoryPeer::OBJ_TYPE] = $obj->getObjType();
}
return BasePeer::doValidate(AppHistoryPeer::DATABASE_NAME, AppHistoryPeer::TABLE_NAME, $columns);

View File

@@ -2549,10 +2549,14 @@
<column name="PRO_UID" type="VARCHAR" size="32" required="true" default=""/>
<column name="TAS_UID" type="VARCHAR" size="32" required="true" default=""/>
<column name="DYN_UID" type="VARCHAR" size="32" required="true" default=""/>
<column name="OBJ_TYPE" type="VARCHAR" size="20" required="true" default="DYNAFORM" />
<column name="USR_UID" type="VARCHAR" size="32" required="true" default=""/>
<column name="APP_STATUS" type="VARCHAR" size="100" required="true" default=""/>
<column name="HISTORY_DATE" type="TIMESTAMP" required="false"/>
<column name="HISTORY_DATA" type="LONGVARCHAR" required="true"/>
<validator column="OBJ_TYPE">
<rule name="validValues" value="DYNAFORM|INPUT_DOCUMENT|OUTPUT_DOCUMENT|EXTERNAL|ASSIGN_TASK" message="Please select a valid value for OBJ_TYPE." />
</validator>
<index name="indexAppHistory">
<index-column name="APP_UID"/>
<index-column name="TAS_UID"/>

View File

@@ -2612,6 +2612,7 @@ CREATE TABLE [APP_HISTORY]
[PRO_UID] VARCHAR(32) default '' NOT NULL,
[TAS_UID] VARCHAR(32) default '' NOT NULL,
[DYN_UID] VARCHAR(32) default '' NOT NULL,
[OBJ_TYPE] VARCHAR(20) default 'DYNAFORM' NOT NULL,
[USR_UID] VARCHAR(32) default '' NOT NULL,
[APP_STATUS] VARCHAR(100) default '' NOT NULL,
[HISTORY_DATE] CHAR(19) NULL,

View File

@@ -1206,6 +1206,7 @@ CREATE TABLE `APP_HISTORY`
`PRO_UID` VARCHAR(32) default '' NOT NULL,
`TAS_UID` VARCHAR(32) default '' NOT NULL,
`DYN_UID` VARCHAR(32) default '' NOT NULL,
`OBJ_TYPE` VARCHAR(20) default 'DYNAFORM' NOT NULL,
`USR_UID` VARCHAR(32) default '' NOT NULL,
`APP_STATUS` VARCHAR(100) default '' NOT NULL,
`HISTORY_DATE` DATETIME,
@@ -2380,3 +2381,4 @@ CREATE TABLE `LIST_UNASSIGNED_GROUP`
)ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Unassiged list';
# This restores the fkey checks, after having unset them earlier
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1491,6 +1491,7 @@ CREATE TABLE "APP_HISTORY"
"PRO_UID" VARCHAR2(32) default '' NOT NULL,
"TAS_UID" VARCHAR2(32) default '' NOT NULL,
"DYN_UID" VARCHAR2(32) default '' NOT NULL,
"OBJ_TYPE" VARCHAR(20) default 'DYNAFORM' NOT NULL,
"USR_UID" VARCHAR2(32) default '' NOT NULL,
"APP_STATUS" VARCHAR2(100) default '' NOT NULL,
"HISTORY_DATE" DATE,

View File

@@ -80,15 +80,18 @@ try {
$_SESSION['TRIGGER_DEBUG']['info'][0]['TRIGGERS_VALUES'] = $triggers;
}
$appFields['DEL_INDEX'] = $_SESSION['INDEX'];
$appFields['TAS_UID'] = $_SESSION['TASK'];
unset($appFields['APP_STATUS']);
unset($appFields['APP_PROC_STATUS']);
unset($appFields['APP_PROC_CODE']);
unset($appFields['APP_PIN']);
$oCase->updateCase( $_SESSION['APPLICATION'], $appFields ); //Save data
$appFields["DEL_INDEX"] = $_SESSION["INDEX"];
$appFields["TAS_UID"] = $_SESSION["TASK"];
$appFields["USER_UID"] = $_SESSION["USER_LOGGED"];
$appFields["CURRENT_DYNAFORM"] = "-2";
$appFields["OBJECT_TYPE"] = "ASSIGN_TASK";
$oCase->updateCase($_SESSION["APPLICATION"], $appFields); //Save data
//derivate case
$oDerivation = new Derivation();
@@ -112,6 +115,13 @@ try {
unset($appFields['APP_PROC_STATUS']);
unset($appFields['APP_PROC_CODE']);
unset($appFields['APP_PIN']);
$appFields["DEL_INDEX"] = $_SESSION["INDEX"];
$appFields["TAS_UID"] = $_SESSION["TASK"];
$appFields["USER_UID"] = $_SESSION["USER_LOGGED"];
$appFields["CURRENT_DYNAFORM"] = "-2";
$appFields["OBJECT_TYPE"] = "ASSIGN_TASK";
$oCase->updateCase( $_SESSION['APPLICATION'], $appFields );
// Send notifications - Start

View File

@@ -153,6 +153,10 @@ $arrayData["APP_NUMBER"] = $arrayField["APP_NUMBER"];
$arrayData["APP_DATA"] = $arrayField["APP_DATA"];
$arrayData["DEL_INDEX"] = $_SESSION["INDEX"];
$arrayData["TAS_UID"] = $_SESSION["TASK"];
$arrayData["PRO_UID"] = $_SESSION["PROCESS"];
$arrayData["USER_UID"] = $_SESSION["USER_LOGGED"];
$arrayData["CURRENT_DYNAFORM"] = $inputDocumentUid;
$arrayData["OBJECT_TYPE"] = "INPUT_DOCUMENT";
$case->updateCase($_SESSION["APPLICATION"], $arrayData);

View File

@@ -182,12 +182,16 @@ unset($Fields['APP_STATUS']);
unset($Fields['APP_PROC_STATUS']);
unset($Fields['APP_PROC_CODE']);
unset($Fields['APP_PIN']);
$Fields["USER_UID"] = $_SESSION["USER_LOGGED"];
$Fields["CURRENT_DYNAFORM"] = $_GET["UID"];
$Fields["OBJECT_TYPE"] = ($_GET["UID"] == "-1")? "ASSIGN_TASK" : $_GET["TYPE"];
$oCase->updateCase( $_SESSION['APPLICATION'], $Fields );
//Save data - End
//Obtain previous and next step - Start
try {
try {
$oCase = new Cases();
$aNextStep = $oCase->getNextStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] );
$aPreviousStep = $oCase->getPreviousStep( $_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['STEP_POSITION'] );
@@ -266,12 +270,12 @@ try {
$G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_GET['UID'], '', $Fields['APP_DATA'], 'cases_SaveData?UID=' . $_GET['UID'] . '&APP_UID=' . $_SESSION['APPLICATION'], '', (strtolower($oStep->getStepMode()) != 'edit' ? strtolower($oStep->getStepMode()) : ''));
}
break;
case 'INPUT_DOCUMENT':
case 'INPUT_DOCUMENT':
if ($noShowTitle == 0) {
$G_PUBLISH->AddContent( 'smarty', 'cases/cases_title', '', '', $array );
}
$oInputDocument = new InputDocument();
$Fields = $oInputDocument->load( $_GET['UID'] );
$Fields = $oInputDocument->load( $_GET['UID'] );
if (! $aPreviousStep) {
$Fields['__DYNAFORM_OPTIONS']['PREVIOUS_STEP_LABEL'] = '';
$Fields['PREVIOUS_STEP_LABEL'] = '';
@@ -285,13 +289,13 @@ try {
$Fields['NEXT_STEP'] = $aNextStep['PAGE'];
$Fields['NEXT_STEP_LABEL'] = G::loadTranslation( "ID_NEXT_STEP" );
switch ($_GET['ACTION']) {
case 'ATTACH':
case 'ATTACH':
switch ($Fields['INP_DOC_FORM_NEEDED']) {
case 'REAL':
$Fields['TYPE_LABEL'] = G::LoadTranslation( 'ID_NEW' );
$sXmlForm = 'cases/cases_AttachInputDocument2';
break;
case 'VIRTUAL':
case 'VIRTUAL':
$Fields['TYPE_LABEL'] = G::LoadTranslation( 'ID_ATTACH' );
$sXmlForm = 'cases/cases_AttachInputDocument1';
break;
@@ -326,7 +330,7 @@ try {
$oHeadPublisher = & headPublisher::getSingleton();
$titleDocument = "<h3>" . $Fields['INP_DOC_TITLE'] . "<br><small>" . G::LoadTranslation( 'ID_INPUT_DOCUMENT' ) . "</small></h3>";
if ($Fields['INP_DOC_DESCRIPTION']) {
if ($Fields['INP_DOC_DESCRIPTION']) {
$titleDocument .= " " . str_replace( "\n", "", str_replace( "'", "\'", nl2br( html_entity_decode($Fields['INP_DOC_DESCRIPTION'], ENT_COMPAT, "UTF-8") ) ) ) . "";
}

View File

@@ -65,7 +65,7 @@
<td width="20%">{dynDate}</td>
<td width="20%">{dynUser}</td>
<td width="20%"><div class="userGroupLink"><a href="javascript:toggleTable('{tablename}');">{dynChanges}</a></div></td>
<td width="10%"><div class="userGroupLink"><a href="javascript:showDynaformHistory('{dynUID}', '{tablename}', '{dynDate}', '{dynTitle}');">{viewForm}</a></div></td>
<td width="10%"><div class="userGroupLink">{viewForm}</div></td>
</tr>
</table>
</td>

View File

@@ -1,4 +1,4 @@
<?php
<?php
/**
* cases_DynaformHistory.php
*
@@ -21,162 +21,157 @@
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
*/
$tpl = new TemplatePower( PATH_TPL . 'cases/cases_DynaformHistory.html' );
$tpl->prepare();
G::LoadClass('case');
$oCase = new Cases();
$Fields = $oCase->loadCase($_SESSION['APPLICATION']);
// Load form info
if (isset($_REQUEST['DYN_UID']) && $_REQUEST['DYN_UID'] != '') {
$form = new Form($_REQUEST['PRO_UID'] . PATH_SEP . $_REQUEST['DYN_UID'], PATH_DYNAFORM, SYS_LANG, false);
}
$historyData=array();
$historyDataAux=array();
require_once 'classes/model/AppHistory.php';
$appHistory = new AppHistory();
$c=$appHistory->getDynaformHistory($_REQUEST['PRO_UID'],$_REQUEST['TAS_UID'],$_REQUEST['APP_UID'],$_REQUEST['DYN_UID']);
$oDataset = ArrayBasePeer::doSelectRs ( $c);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$changeCount=0;
while ($aRow = $oDataset->getRow()) {
$changeCount++;
$changedValues=unserialize($aRow['HISTORY_DATA']);
$tableName="_TCHANGE_".$changeCount;
$historyDataAux[$tableName]=$changedValues;
$oDataset->next();
}
$historyData=array_reverse($historyDataAux);
$changeCount=count($historyData);
foreach($historyData as $key => $value){
$tableName="_TCHANGE_".$changeCount;
$changeCountA=$changeCount+1;
$tableNameA="_TCHANGE_".$changeCountA;
if(isset($historyData[$tableNameA])){
//$historyData[$key]=array_merge($historyData[$tableNameA],$value);
//Array merge recursive doesn't work. So here is an own procedure
$historyData[$key]=$historyData[$tableNameA];
foreach($value as $key1 => $value2){
if(!is_array($value2)){
$historyData[$key][$key1]=$value2;
}else{
foreach($value2 as $key3 => $value3){
if(is_array($value3)){
foreach($value3 as $key4 => $value4){
$historyData[$key][$key1][$key3][$key4]=$value4;
}
}
}
}
}
}
$changeCount--;
}
$oDataset = ArrayBasePeer::doSelectRs ( $c);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$changeCount=0;
while ($aRow = $oDataset->getRow()) {
$changeCount++;
$changedValues=unserialize($aRow['HISTORY_DATA']);
$tpl->newBlock( "DYNLOG" );
$tableName="_TCHANGE_".$changeCount;
$changeCountA=$changeCount+1;
$tableNameA="_TCHANGE_".$changeCountA;
$tpl->assign( "dynTitle" , addslashes($aRow['DYN_TITLE']) );
$tpl->assign( "dynDate" , $aRow['HISTORY_DATE'] );
$tpl->assign( "dynUser" , addslashes($aRow['USR_NAME']) );
$tpl->assign( "changes" , G::LoadTranslation("ID_CHANGES") );
$tpl->assign( "dynUID" , $aRow['DYN_UID'] );
$tpl->assign( "tablename" , $tableName );
$tpl->assign( "viewForm" , G::LoadTranslation("ID_VIEW") );
$tpl->assign( "dynaform" , G::LoadTranslation("ID_DYNAFORM") );
$tpl->assign( "date" , G::LoadTranslation("ID_DATE") );
$tpl->assign( "user" , G::LoadTranslation("ID_USER") );
$tpl->assign( "fieldNameLabel" , G::LoadTranslation("ID_FIELDS") );
$tpl->assign( "previousValuesLabel" , G::LoadTranslation("ID_PREV_VALUES") );
$tpl->assign( "currentValuesLabel" , G::LoadTranslation("ID_CURRENT_VALUES") );
$count=0;
foreach($changedValues as $key =>$value){
if(($value!=NULL)&&(!is_array($value))){
if (isset($form) && isset($form->fields[$key])) {
$label = $form->fields[$key]->label . ' (' . $key . ')';
}
else {
$label = $key;
}
$tpl->newBlock( "FIELDLOG" );
$tpl->assign( "fieldName" , $label );
$tpl->assign( "previous" , isset($historyData[$tableNameA][$key])?$historyData[$tableNameA][$key]:"" );
$tpl->assign( "actual" , $value );
$count++;
}
if(is_array($value)){
foreach($value as $key1 =>$value1){
if(is_array($value1)){
foreach($value1 as $key2 =>$value2) {
if (isset($form) && isset($form->fields[$key]->fields[$key2])) {
$label = $form->fields[$key]->fields[$key2]->label . ' (' . $key . '[' . $key1 . '][' . $key2 . '])';
}
else {
$label = $key . '[' . $key1 . ']' . '[' . $key2 . ']';
}
$tpl->newBlock( "FIELDLOG" );
$tpl->assign( "fieldName" , $label );
$tpl->assign( "previous" , isset($historyData[$tableNameA][$key][$key1][$key2])?$historyData[$tableNameA][$key][$key1][$key2]:"" );
$tpl->assign( "actual" , $value2 );
$count++;
}
}
}
}
}
$tpl->gotoBlock( "DYNLOG" );
$tpl->assign( "dynChanges" , G::LoadTranslation("ID_FIELDS_CHANGED_NUMBER")." (".$count.")" );
$tpl->assign( "count" , $count+1 );
$oDataset->next();
}
if(!isset($changedValues)){
$tpl->newBlock( "NORESULTS" );
$tpl->assign( "noResults" , G::LoadTranslation("ID_NO_RECORDS_FOUND"));
}
$_SESSION['HISTORY_DATA']=serialize($historyData);
$tpl->gotoBlock( "_ROOT" );
$tpl->printToScreen();
?>
*/
$tpl = new TemplatePower(PATH_TPL . "cases" . PATH_SEP . "cases_DynaformHistory.html");
$tpl->prepare();
require_once 'classes/model/AppHistory.php';
G::LoadClass('case');
$oCase = new Cases();
$Fields = $oCase->loadCase($_SESSION['APPLICATION']);
// Load form info
if (isset($_REQUEST['DYN_UID']) && $_REQUEST['DYN_UID'] != '') {
$form = new Form($_REQUEST['PRO_UID'] . PATH_SEP . $_REQUEST['DYN_UID'], PATH_DYNAFORM, SYS_LANG, false);
}
$historyData = array();
$historyDataAux = array();
$appHistory = new AppHistory();
$c = $appHistory->getDynaformHistory($_REQUEST['PRO_UID'], $_REQUEST['TAS_UID'], $_REQUEST['APP_UID'], $_REQUEST['DYN_UID']);
$oDataset = ArrayBasePeer::doSelectRs($c);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$changeCount = 0;
while ($oDataset->next()) {
$aRow = $oDataset->getRow();
$changeCount++;
$changedValues = unserialize($aRow['HISTORY_DATA']);
$tableName = "_TCHANGE_" . $changeCount;
$historyDataAux[$tableName] = $changedValues;
}
$historyData = array_reverse($historyDataAux);
$changeCount = count($historyData);
foreach ($historyData as $key => $value) {
$tableName = "_TCHANGE_" . $changeCount;
$changeCountA = $changeCount + 1;
$tableNameA = "_TCHANGE_" . $changeCountA;
if (isset($historyData[$tableNameA])) {
//$historyData[$key]=array_merge($historyData[$tableNameA],$value);
//Array merge recursive doesn't work. So here is an own procedure
$historyData[$key] = $historyData[$tableNameA];
foreach ($value as $key1 => $value2) {
if (!is_array($value2)) {
$historyData[$key][$key1] = $value2;
} else {
foreach ($value2 as $key3 => $value3) {
if (is_array($value3)) {
foreach ($value3 as $key4 => $value4) {
$historyData[$key][$key1][$key3][$key4] = $value4;
}
}
}
}
}
}
$changeCount--;
}
$oDataset = ArrayBasePeer::doSelectRs($c);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$changeCount = 0;
while ($oDataset->next()) {
$aRow = $oDataset->getRow();
$changeCount++;
$changedValues = unserialize($aRow['HISTORY_DATA']);
$tpl->newBlock("DYNLOG");
$tableName = "_TCHANGE_".$changeCount;
$changeCountA = $changeCount + 1;
$tableNameA = "_TCHANGE_" . $changeCountA;
$tpl->assign("dynTitle", addslashes($aRow["DYN_TITLE"]));
$tpl->assign("dynDate", $aRow["HISTORY_DATE"]);
$tpl->assign("dynUser", addslashes($aRow["USR_NAME"]));
$tpl->assign("changes", G::LoadTranslation("ID_CHANGES"));
$tpl->assign("dynUID", $aRow["DYN_UID"]);
$tpl->assign("tablename", $tableName);
$tpl->assign("viewForm", ($aRow["OBJ_TYPE"] == "DYNAFORM")? "<a href=\"javascript:;\" onclick=\"showDynaformHistory('" . $aRow["DYN_UID"] . "', '$tableName', '" . $aRow["HISTORY_DATE"] . "', '" . addslashes($aRow["DYN_TITLE"]) . "'); return false;\">" . G::LoadTranslation("ID_VIEW") . "</a>" : "");
$tpl->assign("dynaform", G::LoadTranslation("ID_DYNAFORM"));
$tpl->assign("date", G::LoadTranslation("ID_DATE"));
$tpl->assign("user", G::LoadTranslation("ID_USER"));
$tpl->assign("fieldNameLabel", G::LoadTranslation("ID_FIELDS"));
$tpl->assign("previousValuesLabel", G::LoadTranslation("ID_PREV_VALUES"));
$tpl->assign("currentValuesLabel", G::LoadTranslation("ID_CURRENT_VALUES"));
$count = 0;
foreach ($changedValues as $key => $value) {
if ($value != null && !is_array($value)) {
if (isset($form) && isset($form->fields[$key])) {
$label = $form->fields[$key]->label . ' (' . $key . ')';
} else {
$label = $key;
}
$tpl->newBlock("FIELDLOG");
$tpl->assign("fieldName", $label);
$tpl->assign("previous", (isset($historyData[$tableNameA][$key]))? $historyData[$tableNameA][$key] : "");
$tpl->assign("actual", $value);
$count++;
}
if (is_array($value)) {
foreach ($value as $key1 => $value1) {
if (is_array($value1)) {
foreach ($value1 as $key2 => $value2) {
if (isset($form) && isset($form->fields[$key]->fields[$key2])) {
$label = $form->fields[$key]->fields[$key2]->label . ' (' . $key . '[' . $key1 . '][' . $key2 . '])';
} else {
$label = $key . '[' . $key1 . ']' . '[' . $key2 . ']';
}
$tpl->newBlock("FIELDLOG");
$tpl->assign("fieldName", $label);
$tpl->assign("previous", (isset($historyData[$tableNameA][$key][$key1][$key2]))? $historyData[$tableNameA][$key][$key1][$key2] : "");
$tpl->assign("actual", $value2);
$count++;
}
}
}
}
}
$tpl->gotoBlock("DYNLOG");
$tpl->assign("dynChanges", G::LoadTranslation("ID_FIELDS_CHANGED_NUMBER") . " (" . $count . ")");
$tpl->assign("count", $count + 1);
}
if (!isset($changedValues)) {
$tpl->newBlock("NORESULTS");
$tpl->assign("noResults", G::LoadTranslation("ID_NO_RECORDS_FOUND"));
}
$_SESSION['HISTORY_DATA'] = serialize($historyData);
$tpl->gotoBlock("_ROOT");
$tpl->printToScreen();