Skip to content
Snippets Groups Projects
Commit 5b0813b6 authored by Benjamin Ulrich's avatar Benjamin Ulrich :speech_balloon:
Browse files

Merge branch '2021.1_1070092_Grouptasks_mw' into '2021.1'

2021.1 1070092 grouptasks mw

See merge request xrm/basic!1089
parents 06b3ea64 f644b3ba
No related branches found
No related tags found
No related merge requests found
Showing
with 149 additions and 41 deletions
import("AttributeRegistry_basic");
import("system.result");
result.string($AttributeRegistry.departments());
\ No newline at end of file
import("system.result");
import("system.vars");
let param = vars.get("$param.Description_param");
if (!vars.get("$this.value") && param)
{
result.string(param);
}
\ No newline at end of file
import("system.result");
import("system.neon");
import("system.vars");
import("Employee_lib");
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
result.string(EmployeeUtils.getCurrentContactId());
\ No newline at end of file
import("system.neon");
import("Sql_lib");
import("system.vars");
import("system.db");
import("KeywordRegistry_basic")
var data = vars.get("$sys.selection")
var cond = newWhere("TASK.TASKID", data, SqlBuilder.IN()).toString();
db.updateData("TASK", ["STATUS"], null, [$KeywordRegistry.taskStatus$ended()], cond)
neon.refreshAll()
\ No newline at end of file
import("system.neon");
import("system.tools");
import("system.result");
import("system.vars");
import("Sql_lib");
import("Employee_lib");
import("system.project");
var contactId = EmployeeUtils.getCurrentContactId();
var userRole = tools.getUser(vars.get("$sys.user"), tools.PROFILE_FULL);
var departmentId = newSelect("PROPVAL", project.getSystemTableAlias("ASYS_USERS"))
.from("ASYS_USERS")
.where("ASYS_USERS.PROPKEY", "department")
.and("ASYS_USERS.NAME", userRole.myRole)
.cell();
var taskAttendee = newSelect("distinct TASK_ID")
.from("TASKATTENDEES")
.where("TASKATTENDEES.CONTACT_ID", contactId)
.or("TASKATTENDEES.DEPARTMENT_ID", departmentId)
.arrayColumn();
var canEdit = false;
var count = 0;
while(!canEdit && count < taskAttendee.length) {
if(taskAttendee[count] == vars.get("$sys.selection"))
canEdit = true
count++;
}
var role = tools.hasAnyRole(vars.getString("$sys.user"), ["PROJECT_Abt_Verwaltung", "PROJECT_Abt_Geschaeftsleitung"])
if(canEdit || vars.get("$field.REQUESTOR_CONTACT_ID") == contactId
|| vars.get("$field.USER_NEW") == vars.get("$sys.user") || role) {
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
import("ActivityTask_lib");
import("system.result");
import("system.vars");
import("KeywordRegistry_basic");
import("system.result");
import("system.neon");
var res;
switch(vars.getString("$field.PRIORITY"))
{
case $KeywordRegistry.taskPriority$none():
result.string(neon.PRIORITY_NONE_COLOR);
break;
case $KeywordRegistry.taskPriority$low():
result.string(neon.PRIORITY_LOW_COLOR);
case $KeywordRegistry.taskPriority$high():
res = neon.PRIORITY_HIGH_COLOR;
break;
case $KeywordRegistry.taskPriority$medium():
result.string(neon.PRIORITY_MEDIUM_COLOR);
res = neon.PRIORITY_MEDIUM_COLOR;
break;
case $KeywordRegistry.taskPriority$high():
result.string(neon.PRIORITY_HIGH_COLOR);
case $KeywordRegistry.taskPriority$low():
res = neon.PRIORITY_LOW_COLOR;
break;
case $KeywordRegistry.taskPriority$none():
default:
res = neon.PRIORITY_NONE_COLOR;
break;
}
result.string(res);
\ No newline at end of file
......@@ -3,13 +3,19 @@ import("system.vars");
import("Offer_lib");
var taskId = vars.get("$field.TASKID");
var contactIds = [vars.get("$field.REQUESTOR_CONTACT_ID"), vars.get("$field.EDITOR_CONTACT_ID")];
var contactIds = newSelect("TASKATTENDEES.CONTACT_ID")
.from("TASKATTENDEES")
.where("TASKATTENDEES.TASK_ID", vars.get("$field.TASKID"))
.and("CONTACT_ID IS NOT NULL")
.arrayColumn()
.push(vars.get("$field.REQUESTOR_CONTACT_ID"));
var links = newSelect("TASKLINK.OBJECT_TYPE, TASKLINK.OBJECT_ROWID")
.from("TASKLINK")
.where("TASKLINK.TASK_ID", vars.get("$field.TASKID"))
.and("TASKLINK.OBJECT_TYPE", ["PrivatePerson", "Organisation", "Salesproject"], SqlBuilder.IN())
.table();
.from("TASKLINK")
.where("TASKLINK.TASK_ID", vars.get("$field.TASKID"))
.and("TASKLINK.OBJECT_TYPE", ["PrivatePerson", "Organisation", "Salesproject"], SqlBuilder.IN())
.table();
var organisationArray = [];
var salesprojectId;
for (var i = 0; i < links.length; i++) {
......@@ -37,13 +43,13 @@ for (var i = 0; i < links.length; i++) {
for (i = 0; i < organisationArray.length; i++) {
var orgContacts = newSelect("CONTACT.CONTACTID")
.from("CONTACT")
.where("CONTACT.ORGANISATION_ID", newSelect("ORGANISATION.ORGANISATIONID")
.from("ORGANISATION")
.join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
.where("CONTACT.CONTACTID", organisationArray[i])
.cell())
.arrayColumn();
.from("CONTACT")
.where("CONTACT.ORGANISATION_ID", newSelect("ORGANISATION.ORGANISATIONID")
.from("ORGANISATION")
.join("CONTACT", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
.where("CONTACT.CONTACTID", organisationArray[i])
.cell())
.arrayColumn();
contactIds = contactIds.concat(orgContacts);
}
......
import("system.vars");
import("ActivityTask_lib");
import("Context_lib");
import("Ticket_lib")
TicketUtils.createNewTicket(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID"))
\ No newline at end of file
import("system.vars");
import("ActivityTask_lib");
import("Context_lib");
import("Ticket_lib");
TicketUtils.createNewTicket(undefined, undefined, ContextUtils.getCurrentContextId(), vars.get("$field.TASKID"))
......@@ -4,6 +4,5 @@ import("Context_lib");
AdminViewUtils.open("TASKID", [
["PARENT_ID", vars.get("$field.PARENT_ID")],
["PARENT_CONTEXT", vars.get("$field.PARENT_CONTEXT")],
["REQUESTOR_CONTACT_ID", vars.get("$field.REQUESTOR_CONTACT_ID")],
["EDITOR_CONTACT_ID", vars.get("$field.EDITOR_CONTACT_ID")]
]);
\ No newline at end of file
["REQUESTOR_CONTACT_ID", vars.get("$field.REQUESTOR_CONTACT_ID")]
])
\ No newline at end of file
......@@ -6,5 +6,5 @@ import("KeywordRegistry_basic");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null)
{
result.string($KeywordRegistry.taskPriority$low());
result.string($KeywordRegistry.taskPriority$medium());
}
\ No newline at end of file
import("system.vars");
import("ActivityTask_lib");
import("KeywordRegistry_basic");
import("system.result");
import("system.neon");
import("system.datetime");
result.string(TaskUtils.getStatusIcon(vars.getString("$field.STATUS")));
\ No newline at end of file
var res;
// The cast to date and than to long again is necessary to get no timezone problems.
var maturityDate = datetime.toLong(datetime.toDate(vars.get("$field.maturityDate_Day"), "dd.MM.yyyy"), "dd.MM.yyyy")
var start = datetime.toLong(datetime.toDate(vars.get("$field.startDate_Day"), "dd.MM.yyyy"), "dd.MM.yyyy")
var today = datetime.today();
if(maturityDate < today)
{
res = "NEON:OVERDUE";
}
else if(start > today)
{
res = "NEON:UNDUE";
}
else
{
res = "NEON:DUE";
}
result.string(res);
\ No newline at end of file
......@@ -5,4 +5,5 @@ import("Contact_lib");
var id = vars.get("$field.REQUESTOR_CONTACT_ID");
//show the simpel title since this will be later an employee-entry and therefore no organisation is needed
var title = ContactUtils.getTitleByContactId(id);
result.string(title);
\ No newline at end of file
import("system.vars");
import("system.result");
import("system.neon");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
result.string(neon.COMPONENTSTATE_READONLY);
\ No newline at end of file
import("system.neon");
import("Sql_lib");
import("system.vars");
import("system.db");
import("KeywordRegistry_basic")
var data = vars.get("$sys.selection")
var cond = newWhere("TASK.TASKID", data, SqlBuilder.IN()).toString();
db.updateData("TASK", ["STATUS"], null, [$KeywordRegistry.taskStatus$ended()], cond)
neon.refreshAll()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment