HOR-931 "Timer Event - Case creation" SOLVED

Issue:
    Timer Event - Case creation
Cause:
    El update para la siguiente fecha de ejecucion se la hace despues de la creacion del caso
Solution:
    El update para la siguiente fecha de ejecucion se la hace antes de la creacion del caso
Note:
    Un ejemplo para replicar el problema es el siguiente:
        Renombrar el file ----> processmaker/workflow/engine/src/ProcessMaker/BusinessModel/Light/NotificationDevice.php
        a                 ----> processmaker/workflow/engine/src/ProcessMaker/BusinessModel/Light/NotificationDeviceXXX.php
    Luego ejecutar el timereventcron
This commit is contained in:
Victor Saisa Lopez
2016-06-22 17:21:16 -04:00
parent 524d139820
commit b0a502d40f

View File

@@ -1270,6 +1270,40 @@ class TimerEvent
}
if ($flagCase) {
//Update Timer-Event
$arrayData = [];
switch ($arrayTimerEventData['TMREVN_OPTION']) {
case 'HOURLY':
case 'DAILY':
case 'MONTHLY':
case 'EVERY':
if ($timerEventNextRunDateNew == '') {
$timerEventNextRunDateNew = $this->getNextRunDateByDataAndDatetime(
$arrayTimerEventData, $timerEventNextRunDate, false
);
}
if ($arrayTimerEventData['TMREVN_OPTION'] != 'EVERY' &&
$arrayTimerEventData['TMREVN_END_DATE'] . '' != '' &&
strtotime($timerEventNextRunDateNew) > strtotime($arrayTimerEventData['TMREVN_END_DATE'] . ' 23:59:59')
) {
$arrayData['TMREVN_STATUS'] = 'PROCESSED';
} else {
$arrayData['TMREVN_NEXT_RUN_DATE'] = $timerEventNextRunDateNew;
}
break;
case 'ONE-DATE-TIME':
$arrayData['TMREVN_STATUS'] = 'PROCESSED';
break;
}
$arrayData['TMREVN_LAST_RUN_DATE'] = $timerEventNextRunDate;
$arrayData['TMREVN_LAST_EXECUTION_DATE'] = date('Y-m-d H:i:s');
$result = $this->singleUpdate($arrayTimerEventData['TMREVN_UID'], $arrayData);
//Show info in terminal
if ($flagRecord) {
$common->frontEndShow("TEXT", "");
}
@@ -1314,36 +1348,6 @@ class TimerEvent
$this->log("CREATED-NEW-CASE", "Failed: " . $arrayResult["message"] . ", PRO_UID: " . $arrayTimerEventData["PRJ_UID"]);
}
//Update Timer-Event
$arrayData = array();
switch ($arrayTimerEventData["TMREVN_OPTION"]) {
case "HOURLY":
case "DAILY":
case "MONTHLY":
case "EVERY":
if ($timerEventNextRunDateNew == "") {
$timerEventNextRunDateNew = $this->getNextRunDateByDataAndDatetime($arrayTimerEventData, $timerEventNextRunDate, false);
}
if ($arrayTimerEventData["TMREVN_OPTION"] != "EVERY" &&
$arrayTimerEventData["TMREVN_END_DATE"] . "" != "" && strtotime($timerEventNextRunDateNew) > strtotime($arrayTimerEventData["TMREVN_END_DATE"] . " 23:59:59")
) {
$arrayData["TMREVN_STATUS"] = "PROCESSED";
} else {
$arrayData["TMREVN_NEXT_RUN_DATE"] = $timerEventNextRunDateNew;
}
break;
case "ONE-DATE-TIME":
$arrayData["TMREVN_STATUS"] = "PROCESSED";
break;
}
$arrayData["TMREVN_LAST_RUN_DATE"] = $timerEventNextRunDate;
$arrayData["TMREVN_LAST_EXECUTION_DATE"] = date("Y-m-d H:i:s");
$result = $this->singleUpdate($arrayTimerEventData["TMREVN_UID"], $arrayData);
$flagRecord = true;
}
}
@@ -1513,6 +1517,7 @@ class TimerEvent
}
if ($flagCase) {
//Show info in terminal
if ($flagRecord) {
$common->frontEndShow("TEXT", "");
}