rejecting a revision will neccesarily put document in need correction status

This commit is contained in:
Uwe Steinmann 2018-03-13 17:51:44 +01:00
parent 31d3d491b5
commit 9b2eecca0e
5 changed files with 37 additions and 6 deletions

View File

@ -33,6 +33,13 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
$group = $this->params['group'];
$comment = $this->params['comment'];
/* if set to true, a single reject will reject the doc. If set to false
* all revisions will be collected first and afterwards the doc is rejected
* if one has rejected it. So in the very end the doc is rejected, but
* doc remainѕ in S_IN_REVISION until all have revised the doc
*/
$onevotereject = $this->param['onevotereject'];
/* Get the document id and name before removing the document */
$docname = $document->getName();
$documentid = $document->getID();
@ -63,7 +70,7 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
*/
$result = $this->callHook('reviseUpdateDocumentStatus', $content);
if($result === null) {
if ($revisionstatus == -1){
if ($onevotereject && $revisionstatus == -1){
if(!$content->setStatus(S_NEEDS_CORRECTION,$comment,$user)) {
$this->error = 1;
$this->errormsg = "revision_update_failed";
@ -76,24 +83,38 @@ class SeedDMS_Controller_ReviseDocument extends SeedDMS_Controller_Common {
$this->errormsg = "cannot_retrieve_revision_snapshot";
return false;
}
$revisionCT = 0;
$revisionok = 0;
$revisionnotok = 0;
$revisionTotal = 0;
foreach ($docRevisionStatus as $drstat) {
if ($drstat["status"] == 1) {
$revisionCT++;
$revisionok++;
}
if ($drstat["status"] == -1) {
$revisionnotok++;
}
if ($drstat["status"] != -2) {
$revisionTotal++;
}
}
// If all revisions have been received and there are no rejections,
// then release the document otherwise put it back into revision workflow
if ($revisionCT == $revisionTotal) {
// If all revisions have been done and there are no rejections,
// then release the document. If all revisions have been done but some
// of them were rejections then documents needs correction.
// Otherwise put it back into revision workflow
if ($revisionok == $revisionTotal) {
$newStatus=S_RELEASED;
if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) {
if(!$this->callHook('finishReviseDocument', $content)) {
}
}
} elseif (($revisionok + $revisionnotok) == $revisionTotal) {
$newStatus=S_NEEDS_CORRECTION;
// if ($content->finishRevision($user, $newStatus, 'Finished revision workflow', getMLText("automatic_status_update"))) {
if(!$content->setStatus($newStatus,$comment,$user)) {
$this->error = 1;
$this->errormsg = "revision_update_failed";
return false;
}
} else {
$newStatus=S_IN_REVISION;
if(!$content->setStatus($newStatus,$comment,$user)) {

View File

@ -186,6 +186,8 @@ class Settings { /* {{{ */
var $_enableAcknowledgeWorkflow = true;
// enable/disable revision workflow
var $_enableRevisionWorkflow = true;
// enable/disable revision on vote reject
var $_enableRevisionOnVoteReject = true;
// Allow to set just a reviewer in tradional workflow
var $_allowReviewerOnly = true;
// enable/disable log system
@ -649,6 +651,7 @@ class Settings { /* {{{ */
$this->_workflowMode = strval($tab["workflowMode"]);
$this->_enableAcknowledgeWorkflow = strval($tab["enableAcknowledgeWorkflow"]);
$this->_enableRevisionWorkflow = strval($tab["enableRevisionWorkflow"]);
$this->_enableRevisionOnVoteReject = strval($tab["enableRevisionOnVoteReject"]);
$this->_allowReviewerOnly = Settings::boolval($tab["allowReviewerOnly"]);
$this->_enableVersionDeletion = Settings::boolval($tab["enableVersionDeletion"]);
$this->_enableVersionModification = Settings::boolval($tab["enableVersionModification"]);
@ -965,6 +968,7 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "workflowMode", $this->_workflowMode);
$this->setXMLAttributValue($node, "enableAcknowledgeWorkflow", $this->_enableAcknowledgeWorkflow);
$this->setXMLAttributValue($node, "enableRevisionWorkflow", $this->_enableRevisionWorkflow);
$this->setXMLAttributValue($node, "enableRevisionOnVoteReject", $this->_enableRevisionOnVoteReject);
$this->setXMLAttributValue($node, "allowReviewerOnly", $this->_allowReviewerOnly);
$this->setXMLAttributValue($node, "enableVersionDeletion", $this->_enableVersionDeletion);
$this->setXMLAttributValue($node, "enableVersionModification", $this->_enableVersionModification);

View File

@ -92,6 +92,7 @@ if ($_POST["revisionType"] == "grp") {
}
$controller->setParam('group', $group);
$controller->setParam('comment', $_POST["comment"]);
$controller->setParam('onevotereject', $settins->_enableRevisionOnVoteReject);
if(!$controller->run()) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText($controller->getErrorMsg()));
}

View File

@ -180,6 +180,7 @@ if ($action == "saveSettings")
$settings->_workflowMode = $_POST["workflowMode"];
$settings->_enableAcknowledgeWorkflow = getBoolValue("enableAcknowledgeWorkflow");
$settings->_enableRevisionWorkflow = getBoolValue("enableRevisionWorkflow");
$settings->_enableRevisionOnVoteReject = getBoolValue("enableRevisionOnVoteReject");
$settings->_allowReviewerOnly = getBoolValue("allowReviewerOnly");
$settings->_enableAdminRevApp = getBoolValue("enableAdminRevApp");
$settings->_enableOwnerRevApp = getBoolValue("enableOwnerRevApp");

View File

@ -678,6 +678,10 @@ if(!is_writeable($settings->_configFilePath)) {
<td><?php printMLText("settings_enableRevisionWorkflow");?>:</td>
<td><input name="enableRevisionWorkflow" type="checkbox" <?php if ($settings->_enableRevisionWorkflow) echo "checked" ?> /></td>
</tr>
<tr title="<?php printMLText("settings_enableRevisionOnVoteReject_desc");?>">
<td><?php printMLText("settings_enableRevisionOnVoteReject");?>:</td>
<td><input name="enableRevisionOnVoteReject" type="checkbox" <?php if ($settings->_enableRevisionOnVoteReject) echo "checked" ?> /></td>
</tr>
<tr title="<?php printMLText("settings_versioningFileName_desc");?>">
<td><?php printMLText("settings_versioningFileName");?>:</td>
<td><?php $this->showTextField("versioningFileName", $settings->_versioningFileName); ?></td>