BUG 8775 Add validation to prevent deletion of tasks... SOLVED

- Problem, a task is deleted if you have or not cases
- Added validation, that prevents a task is deleted if you have cases
This commit is contained in:
Victor Saisa Lopez
2012-04-03 18:40:30 -04:00
parent 852c0836ce
commit cec40efb8a
2 changed files with 74 additions and 14 deletions

View File

@@ -1511,22 +1511,48 @@ var processmap=function(){
},args:index})},
{image:"/images/delete.png",text:G_STRINGS.ID_PROCESSMAP_DELETE_TASK,launch:this.parent.closure({instance:this,method:function(index){
var data = this.data.db.task[index];
new this.parent.module.app.confirm().make({
label:G_STRINGS.ID_PROCESSMAP_CONFIRM_DELETE_TASK+" "+ data.label,
action:function()
{
data.object.drag.flush();
this.dropables.derivation.unregister(data.object.dropIndex);
this.data.render.deleteDerivation(data.uid,true);
this.parent.dom.remove(data.object.elements);
var r = new leimnud.module.rpc.xmlhttp({
url:this.options.dataServer,
args:"action=deleteTask&data="+{pro_uid:this.options.uid,tas_uid:data.uid}.toJSONString()
});
r.make();
}.extend(this)
var r = new leimnud.module.rpc.xmlhttp({
url: this.options.dataServer,
args: "action=taskCases&data=" + {
task_uid: data.uid
}.toJSONString()
});
r.callback = function (rpc) {
var rs = rpc.xmlhttp.responseText.parseJSON();
var casesNumRec = rs.casesNumRec;
if (casesNumRec == 0) {
new this.parent.module.app.confirm().make({
label: G_STRINGS.ID_PROCESSMAP_CONFIRM_DELETE_TASK + " " + data.label,
action: function () {
data.object.drag.flush();
this.dropables.derivation.unregister(data.object.dropIndex);
this.data.render.deleteDerivation(data.uid, true);
this.parent.dom.remove(data.object.elements);
var r2 = new leimnud.module.rpc.xmlhttp({
url: this.options.dataServer,
args: "action=deleteTask&data=" + {
pro_uid: this.options.uid,
tas_uid: data.uid
}.toJSONString()
});
r2.make();
}.extend(this)
});
}
else {
var msg = _("ID_TASK_CANT_DELETE");
msg = msg.replace("{0}", data.label);
msg = msg.replace("{1}", casesNumRec);
new this.parent.module.app.info().make({label: msg});
}
}.extend(this);
r.make();
return;
if(confirm(G_STRINGS.ID_PROCESSMAP_CONFIRM_DELETE_TASK+" "+ data.label))
{
data.object.drag.flush();

View File

@@ -501,6 +501,40 @@ try {
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_FileEditCreateEmpty', '');
G::RenderPage('publish', 'raw');
break;
case "taskCases":
require_once ("classes/model/Application.php");
require_once ("classes/model/AppDelegation.php");
require_once ("classes/model/AppDelay.php");
$criteria = new Criteria("workflow");
$criteria->addSelectColumn("COUNT(DISTINCT APPLICATION.APP_UID)");
$criteria->addJoin(ApplicationPeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::LEFT_JOIN);
$criteria->addJoin(ApplicationPeer::APP_UID, AppDelayPeer::APP_UID, Criteria::LEFT_JOIN);
$criteria->add(AppDelegationPeer::TAS_UID, $oData->task_uid);
$criteria->add(
$criteria->getNewCriterion(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL)->addOr(
$criteria->getNewCriterion(AppDelayPeer::APP_DELAY_UID, null, Criteria::ISNOTNULL)->addAnd(
$criteria->getNewCriterion(AppDelayPeer::APP_TYPE, array("REASSIGN", "ADHOC", "CANCEL"), Criteria::NOT_IN))->addAnd(
$criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, null, Criteria::ISNULL)->addOr(
$criteria->getNewCriterion(AppDelayPeer::APP_DISABLE_ACTION_USER, 0))
)
)
);
$rs = ApplicationPeer::doSelectRS($criteria);
$rs->next();
$row = $rs->getRow();
$response->casesNumRec = intval($row[0]);
$json = new Services_JSON();
$sOutput = $json->encode($response);
break;
}
if( isset($sOutput) )
die($sOutput);