Making several decisions on one documents
Several decisions on a document
The article describes:
- Creating several decisions on one document.
- Creating tasks based on each decision.
- Changing the form of the standard consideration tab of a certain document type for displaying tasks based on each decision.
Creating decisions
At the moment, there can only be one Decision on Document object in the system. To add several decisions on a document, you can use a condition that the Decision object contains a list of decision results.
Script for creating several decision results
The script checks whether there is a decision object, if there is not, a decision with a result is created, if the object is already created, only the result is added.
var resolution = ((IDocumentExt)context.Doc).Resolution.FirstOrDefault();
if (resolution == null)
{
// Create a new decision
resolution = InterfaceActivator.Create<Resolution>();
resolution.Author = context.DecisionAuthor; // Decision author
resolution.Date = context.DecisionDate; // Decision date
resolution.Document = context.Doc; // Document, decision on which was made
resolution.Status = ResolutionStatus.Complete; // Decision status
}
// Create a result
var addResult = InterfaceActivator.Create<ResolutionResult>();
addResult.CreationDate = context.DecisionDate; // Decision date
addResult.Text = context.DecisionText; // Decision text
addResult.User = context.DecisionAuthor; // Decision author
addResult.Resolution = (Resolution)resolution; // Decision
resolution.Results.Add(addResult); // Add a result
resolution.Save(); // Save the result
Namespaces
using EleWise.ELMA.Documents.Models;
using EleWise.ELMA.Services;
var resolution = ((IDocumentExt)context.Doc).Resolution.FirstOrDefault();
if (resolution == null)
{
resolution = PublicAPI.Docflow.Objects.Resolution.Create();
resolution.Author = context.DecisionAuthor; // Decision author
resolution.Date = context.DecisionDate; // Decision date
resolution.Document = context.Doc; // Document, on which the decision was made
resolution.Status = ResolutionStatus.Complete; // Decision status
}
// Create a result
var addResult = PublicAPI.Docflow.Objects.ResolutionResult.Create();
addResult.CreationDate = context.DecisionDate; // Decision date
addResult.Text = context.DecisionText; // Decision text
addResult.User = context.DecisionAuthor; // Decision author
addResult.Resolution = (Resolution)resolution; // Decision
resolution.Results.Add(addResult); // Add the result
resolution.Save(); // Save the result
Create tasks
To display tasks on the Consideration tab, add a boolean attribute the Task object, e.g. DecisionV. When creating a task, it will get the true value.
The script assigns executors with decision-based tasks with the document attached.
Task creation script
foreach (var user in context.Executors)
{
// Create a task
var task = InterfaceActivator.Create<Task>();
task.Subject = context.Name; // Task subject
task.Executor = user; // Task executor
task.StartDate = context.DecisionDate; // Decision date
task.EndDate = context.ExecutionDate; // Due date
task.Description = item.OrderText; // Task description
task.DecisionV = true; // Variable created in the Task object
task.CreationAuthor = context.DecisionAuthor; // Task author
// Added attachments
var newDocAtt = InterfaceActivator.Create<DocumentAttachment>();
newDocAtt.Document = context. Doc; // Attached document
newDocAtt.CreationAuthor = task.CreationAuthor; // Attachment author
newDocAtt.CreationDate = DateTime.Now; //Attachment creation date
newDocAtt.Save(); // Save the attachment
task.DocumentAttachments.Add(newDocAtt); // Attachments added to the task
task.Save(); // Save the task
}
Namespaces
using EleWise.ELMA.Services;
using EleWise.ELMA.Documents.Models;
foreach (var user in context.Executors)
{
// Create a task
var task = PublicAPI.Portal.TaskBase.Task.Create();
task.Subject = context.Name; // Task subject
task.Executor = user; // Task executor
task.StartDate = context.DecisionDate; // Decision date
task.EndDate = context.ExecutionDate; // Due date
task.Description = item.OrderText; // Task description
task.DecisionV = true; // Variable created in the Task object
task.CreationAuthor = context.DecisionAuthor; // Task author
// Added attachments
var newDocAtt = PublicAPI.Docflow.Objects.DocumentAttachment.Create(context.Doc, task.CreationAuthor);
task.DocumentAttachments.Add(newDocAtt); // Attachments added to the task
task.Save(); // Save the task
}
Changing the page display
For convenient display of information on document decisions and tasks based on each decision, make changes to the standard Consideration tab in a certain document type. After making the changes, the page will look like this:
To change the standard form, replace/add the following configuration files:
\Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Resolution\Info.cshtml
\Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Resolution\Results.cshtml
\Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Resolution\ResultsContent.cshtml
\Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Resolution\ResultsContentExt.cshtml
\Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Resolution\ResultsExt.cshtml
\Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Shared\ResolutionGridExt.cshtml
Make changes to the files:
In the file \Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Resolution\Info.cshtml
in the line @{if(Model.Entity.Document.TypeUid == InterfaceActivator.UID<DocumentType>())
specify the required document type.
In the file \Web\Modules\EleWise.ELMA.Documents.Docflow.Web\Views\Shared\ResolutionGridExt.cshtml
in the line filter.Query = String.Format("DocumentAttachments in (Document = {0}) and CreationAuthor = {1} and DecisionV = true",document.Id,user.Id);
specify the boolean attribute added to the Task object.