diff --git a/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js b/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js index 082d2c305af780656f5456963a7dc03f056ed276..b8b01338db50ae9918fd1b97ef65274a7095116a 100644 --- a/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js +++ b/entity/ServiceEmail_entity/recordcontainers/jdito/onInsert.js @@ -196,7 +196,8 @@ if(returnedMsgAfterSend == true) "directionKeywordId" : $KeywordRegistry.activityDirection$outgoing(), "subject" : infoText, "content" : contentActivity, - "categoryKeywordId" : $KeywordRegistry.activityCategory$mail() + "categoryKeywordId" : $KeywordRegistry.activityCategory$mail(), + "responsibleContactId" : vars.get( "$param.ContactId_param") }; var ActivityLink = ["Supportticket", ticketID]; @@ -296,7 +297,7 @@ if(returnedMsgAfterSend == true) "responsibleContactId" : vars.get( "$param.ContactId_param"), "subject" : translate.text("EMAIL ERROR") + "!", "content" : contentActivity, - "categoryKeywordId" : $KeywordRegistry.activityCategory$mail() + "categoryKeywordId" : $KeywordRegistry.activityCategory$mail() }; var ActivityLink = ["Supportticket", ticketID]; diff --git a/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js b/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js index 41ee4231cb9743c4c282d138cef7ec27294f9cb4..cb9344c6c3a12a31ae9a9fc2a7291e22209dd797 100644 --- a/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js +++ b/entity/SupportTicketMultiSelect_entity/entityfields/changedata/onActionProcess.js @@ -1,66 +1,126 @@ +import("system.question"); +import("system.logging"); +import("system.neon"); +import("Employee_lib"); import("ActivityTask_lib"); +import("Sql_lib"); +import("Contact_lib"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); import("system.translate"); import("system.tools"); -import("Util_lib"); -import("Sql_lib"); -import("system.neon"); import("system.vars"); -import("KeywordRegistry_basic"); var taskIDs= JSON.parse(vars.get("$param.TaskIds_param")); +var taskIDsforStatus = JSON.parse(vars.get("$param.TaskIds_param")); var TaskfieldValues = {}; +var TaskfieldValueStatus = {}; var TicketfieldValues = {}; +var obj_toolsUser = tools.getCurrentUser()[tools.PARAMS]; +var activityContent = []; +var ChangeCounter = 0; +var removedIds; /// PRIORITY if(vars.exists("$field.PRIORITY") && (vars.get("$field.PRIORITY") != "" )) { TaskfieldValues["PRIORITY"] = vars.get("$field.PRIORITY"); + activityContent += translate.text("Priority changed to") + ": " + KeywordUtils.getViewValue($KeywordRegistry.taskPriority(), vars.get("$field.PRIORITY")); } /// STATUS if(vars.exists("$field.STATUS") && (vars.get("$field.STATUS") != "" )) { - TaskfieldValues["STATUS"] = vars.get("$field.STATUS"); - TicketfieldValues["DATE_EDIT_STATUS"] = vars.get("$sys.date"); - if(vars.get("$field.STATUS") == $KeywordRegistry.taskStatus$unassigned()) + if (vars.get("$field.STATUS") != $KeywordRegistry.taskStatus$ended()) { - TicketfieldValues["EDITOR_CONTACT_ID"] = ""; + // Check whether one of the selected Tickets has the status "ended" and removes them from the selection + var endedTicketIds = new SqlBuilder () + .select("TASK.TASKID") + .from("TASK") + .where("TASK.TASKID",taskIDs,SqlBuilder.IN()) + .and("TASK.STATUS",$KeywordRegistry.taskStatus$ended()) + .arrayColumn(); + if(endedTicketIds) + { + for each (endedTicketId in endedTicketIds) + { + var index = taskIDsforStatus.indexOf(endedTicketId); + if (index > -1) + { + removedIds = taskIDsforStatus.splice(index, 1); + ChangeCounter += 1; + } + } + } + TaskfieldValueStatus["STATUS"] = vars.get("$field.STATUS"); + TicketfieldValues["DATE_EDIT_STATUS"] = vars.get("$sys.date"); } - if(vars.get("field.STATUS") == $KeywordRegistry.taskStatus$ended()) + else { - TicketfieldValues["DATE_END"] = vars.get("$sys.date"); - TicketfieldValues["CONCLUSION"] = vars.get("$field.CONCLUSION"); - - var obj_toolsUser = tools.getCurrentUser()[tools.PARAMS]; - - //insert Activity - DataPreset = + if(vars.get("$field.STATUS") == $KeywordRegistry.taskStatus$unassigned()) + { + TicketfieldValues["EDITOR_CONTACT_ID"] = ""; + } + if(vars.get("field.STATUS") == $KeywordRegistry.taskStatus$ended()) + { + TicketfieldValues["DATE_END"] = vars.get("$sys.date"); + TicketfieldValues["CONCLUSION"] = vars.get("$field.CONCLUSION"); + } + if(activityContent != "") { - "directionKeywordId" : $KeywordRegistry.activityDirection$internal(), - "subject" : translate.text("Ticket returned"), - "content" : translate.text("Ticket returned to pool") + ". " - +"\n"+ translate.text("Original editor") + ": " + vars.get( "$field.EDITOR_CONTACT_ID") - +"\n"+ translate.text("Returned by") + ": "+ obj_toolsUser[tools.FIRSTNAME] +" "+ obj_toolsUser[tools.LASTNAME], - "categoryKeywordId" : $KeywordRegistry.activityCategory$sys() - }; - var ActivityLink = ["Supportticket", ticketID]; + activityContent += " / " + } + activityContent += translate.text("Status changed to") + ": " + KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), vars.get("$field.STATUS")); - ActivityUtils.insertNewActivity(DataPreset, [ActivityLink]); - } + TaskfieldValue["STATUS"] = vars.get("$field.STATUS"); + TicketfieldValues["DATE_EDIT_STATUS"] = vars.get("$sys.date"); + } } /// EDITOR if(vars.exists("$field.EDITOR_CONTACT_ID") && (vars.get("$field.EDITOR_CONTACT_ID") != "" )) { TicketfieldValues["EDITOR_CONTACT_ID"] = vars.get("$field.EDITOR_CONTACT_ID"); + if(activityContent != "") + { + activityContent += " / " + } + activityContent += translate.text("Editor changed to") + ": " + ContactUtils.getFullTitleByContactId(vars.get("$field.EDITOR_CONTACT_ID"),false); + } /// CATEGORY if(vars.exists("$field.CATEGORY") && (vars.get("$field.CATEGORY") != "" )) { - TicketfieldValues["CATEGORY"] = vars.get("$field.CATEGORY"); + TicketfieldValues["CATEGORY"] = vars.get("$field.CATEGORY"); + if(activityContent != "") + { + activityContent += " / " + } + activityContent += translate.text("Category changed to") + ": " + KeywordUtils.getViewValue($KeywordRegistry.ticketCategory(), vars.get("$field.CATEGORY")); + } /// UPDATE TICKET & TASK -newWhere("TASK.TASKID",taskIDs,SqlBuilder.IN()).updateFields(TaskfieldValues); -newWhere("TICKET.TASK_ID",taskIDs,SqlBuilder.IN()).updateFields(TicketfieldValues); - +if (taskIDsforStatus) +{ + newWhereIfSet("TASK.TASKID",taskIDsforStatus,SqlBuilder.IN()).updateFields(TaskfieldValueStatus); +} +if (taskIDs) +{ + newWhereIfSet("TASK.TASKID",taskIDs,SqlBuilder.IN()).updateFields(TaskfieldValues); + newWhereIfSet("TICKET.TASK_ID",taskIDs,SqlBuilder.IN()).updateFields(TicketfieldValues); +} -neon.openContext("SupportTicket", "SupportTicketFilter_view", null, neon.OPERATINGSTATE_SEARCH, null); \ No newline at end of file +/// Message to user, if status change was skipped +if (ChangeCounter > 1) +{ + question.showMessage(translate.withArguments("You tried to change the status of \"%0\" tickets from 'ended' to another status.", [ChangeCounter]) + + " " + translate.text("The status-change of these tickets was skipped. Any other changes were carried out.") + + " " + translate.text("To re-open tickets, please use the corresponding action."), question.INFORMATION, translate.text("Status changes skipped!")); +} +if (ChangeCounter == 1) +{ + question.showMessage(translate.text("You tried to change the status of a ticket from 'ended' to another status.") + + " " + translate.text("The status-change of these tickets was skipped. Any other changes were carried out.") + + " " + translate.text("To re-open tickets, please use the corresponding action."), question.INFORMATION, translate.text("Status change skipped!")); +} +neon.closeImage(vars.get("$sys.currentimage"), true) +neon.refresh(); diff --git a/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js b/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js index fe5cf5667d6d68f766d7d2de3cb97f8b70dfbf7b..c65098d31c1960a9583d7a175b7eefef72d34449 100644 --- a/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js +++ b/entity/SupportTicket_entity/entityfields/reopenticket/onActionProcess.js @@ -1,3 +1,4 @@ +import("Employee_lib"); import("Context_lib"); import("ActivityTask_lib"); import("system.translate"); @@ -22,10 +23,9 @@ var obj_toolsUser = tools.getCurrentUser()[tools.PARAMS], var DataPreset = { "directionKeywordId" : $KeywordRegistry.activityDirection$internal(), - "subject" : translate.text("Ticket reopen"), - "content" : translate.text("Ticket was reopen by") + ": "+ obj_toolsUser[tools.FIRSTNAME] +" " - + obj_toolsUser[tools.LASTNAME], - "categoryKeywordId" : $KeywordRegistry.activityCategory$sys() + "subject" : translate.text("Ticket reopen"), + "categoryKeywordId" : $KeywordRegistry.activityCategory$sys(), + "responsibleContactId" : EmployeeUtils.getCurrentContactId() } var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID]; diff --git a/entity/SupportTicket_entity/entityfields/returnticket/onActionProcess.js b/entity/SupportTicket_entity/entityfields/returnticket/onActionProcess.js index 98516b9aa72eb282dc3b6dc51c607f074fbabb38..4f2b2c1fff126ddff1213154dad421d6e55fb720 100644 --- a/entity/SupportTicket_entity/entityfields/returnticket/onActionProcess.js +++ b/entity/SupportTicket_entity/entityfields/returnticket/onActionProcess.js @@ -16,10 +16,23 @@ else { var str_taskId = vars.get("$field.TASK_ID"); var ContactId = EmployeeUtils.getCurrentContactId(); - newWhere("TASK.TASKID",str_taskId).updateFields({ + + newWhere("TASK.TASKID",str_taskId).updateFields( + { "STATUS" : $KeywordRegistry.taskStatus$inProgress() }); - newWhere("TICKET.TASK_ID",str_taskId).updateFields({ + // Set DATE_BEGIN, if not yet set. + if (!vars.get("$field.DATE_BEGIN")) + { + newWhere("TICKET.TASK_ID",str_taskId).updateFields( + { + "DATE_BEGIN" : vars.get("$sys.date") + }) + } + + newWhere("TICKET.TASK_ID",str_taskId).updateFields( + { + "DATE_EDIT_STATUS" : vars.get("$sys.date"), "EDITOR_CONTACT_ID" : ContactId }); neon.refresh(); diff --git a/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js b/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js index bbefca4cd2eb1a7bbe1447d55bfd7a7dd19f7650..af0d6b6281072d3bb7480dc65e88b5c535a1a17a 100644 --- a/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js +++ b/entity/SupportTicket_entity/recordcontainers/db/onDBInsert.js @@ -1,3 +1,4 @@ +import("Employee_lib"); import("Context_lib"); import("Sql_lib"); import("system.translate"); @@ -58,10 +59,11 @@ if( actionName == "duplicateTicket") { "directionKeywordId" : $KeywordRegistry.activityDirection$internal(), "subject" : translate.text("Ticket duplicated (duplicate)"), - "content" : translate.text("Ticket created through duplication by") + ': ' - + obj_toolsUser[tools.FIRSTNAME] +" "+ obj_toolsUser[tools.LASTNAME] + ". " + "content" : translate.text("Ticket created through duplication") + ". " + translate.text("Ticket number of the original ticket") + ': ' + codeold, - "categoryKeywordId" : $KeywordRegistry.activityCategory$sys() + "categoryKeywordId" : $KeywordRegistry.activityCategory$sys(), + "responsibleContactId" : EmployeeUtils.getCurrentContactId() + } var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID]; @@ -72,10 +74,10 @@ if( actionName == "duplicateTicket") { "directionKeywordId" : $KeywordRegistry.activityDirection$internal(), "subject" : translate.text("Ticket duplicated (original)"), - "content" : translate.text("Ticket was duplicated by") + ': '+ obj_toolsUser[tools.FIRSTNAME] +" " - + obj_toolsUser[tools.LASTNAME] + ". " + "content" : translate.text("Ticket was duplicated") + ". " + translate.text("Ticket number of the created ticket") + ': ' + code, - "categoryKeywordId" : $KeywordRegistry.activityCategory$sys() + "categoryKeywordId" : $KeywordRegistry.activityCategory$sys(), + "responsibleContactId" : EmployeeUtils.getCurrentContactId() } var ActivityLink = [ContextUtils.getCurrentContextId(), ticketIDold]; diff --git a/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js b/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js index 58ba8d1829b48623d7960fd8f4cb0c89954e856b..2bacab3ce0a5b9a34fa1e1205a7264abfb17ce02 100644 --- a/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/SupportTicket_entity/recordcontainers/db/onDBUpdate.js @@ -1,3 +1,5 @@ +import("Contact_lib"); +import("Employee_lib"); import("Context_lib"); import("ActivityTask_lib"); import("system.datetime"); @@ -63,11 +65,12 @@ if( vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) { "directionKeywordId" : $KeywordRegistry.activityDirection$internal(), "subject" : translate.text("Ticket resubmitted"), - "content" : translate.text("Ticket resubmitted by") + ': '+ obj_toolsUser[tools.FIRSTNAME] +" " - + obj_toolsUser[tools.LASTNAME] + ". " - + translate.text("New date due") + ": " - + datetime.toDate(vars.get("$field.TASK_MATURITY_DATE"), "dd.MM.yyyy"), - "categoryKeywordId" : $KeywordRegistry.activityCategory$sys() + "content" : translate.text("New date due") + ": " + + datetime.toDate(vars.get("$field.TASK_MATURITY_DATE"), "dd.MM.yyyy") + " " + + translate.text("Editor changed to") + ": " + + ContactUtils.getFullTitleByContactId(vars.get("$field.TICKET_EDITOR_CONTACT_ID"),false), + "categoryKeywordId" : $KeywordRegistry.activityCategory$sys(), + "responsibleContactId" : EmployeeUtils.getCurrentContactId() } var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID]; @@ -85,9 +88,9 @@ if( vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) "directionKeywordId" : $KeywordRegistry.activityDirection$internal(), "subject" : translate.text("Ticket returned"), "content" : translate.text("Ticket returned to pool") + ". " - +"\n"+ translate.text("Original editor") + ": " + vars.get( "$field.TICKET_EDITOR_CONTACT_ID.displayValue") - +"\n"+ translate.text("Returned by") + ": "+ obj_toolsUser[tools.FIRSTNAME] +" "+ obj_toolsUser[tools.LASTNAME], - "categoryKeywordId" : $KeywordRegistry.activityCategory$sys() + +"\n"+ translate.text("Original editor") + ": " + vars.get( "$field.TICKET_EDITOR_CONTACT_ID.displayValue"), + "categoryKeywordId" : $KeywordRegistry.activityCategory$sys(), + "responsibleContactId" : EmployeeUtils.getCurrentContactId() } var ActivityLink = [ContextUtils.getCurrentContextId(), ticketID]; diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 598cfd20b5fc2c8e206a0937610707498a4473a4..e0a47e7366cfaf01cb3f61595162eb83a4fffad0 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -11111,15 +11111,33 @@ <entry> <key>Mailing to customer</key> </entry> + <entry> + <key>You tried to change the status of \"%0\" tickets from 'ended' to another status.</key> + </entry> + <entry> + <key>The status-change of these tickets was skipped. Any other changes were carried out.</key> + </entry> + <entry> + <key>To re-opening tickets, please use the corresponding action.</key> + </entry> <entry> <key>Create only person</key> </entry> + <entry> + <key>Status change skipped!</key> + </entry> <entry> <key>Slave administration '%0' is '%1'</key> </entry> <entry> <key>The file did not contain any data</key> </entry> + <entry> + <key>You tried to change the status of a ticket from 'ended' to another status.</key> + </entry> + <entry> + <key>Status changes skipped!</key> + </entry> <entry> <key>Slave administration</key> </entry> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 07ddc7bfcd9f80331edef6b76410f8de202aa00b..d26ab6e78d8f3411b5185200288b8e97a311c2b1 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -14,9 +14,17 @@ <key>Slave administration</key> <value>Slave Verwaltung</value> </entry> + <entry> + <key>The status-change of these tickets was skipped. Any other changes were carried out.</key> + <value>Die Statusänderungen dieser Tickets wurden übersprungen. Alle anderen Änderungen wurden durchgeführt.</value> + </entry> <entry> <key>Ticket was reopen by</key> </entry> + <entry> + <key>You tried to change the status of a ticket from 'ended' to another status.</key> + <value>Sie haben versucht den Status eines Tickets von 'abgeschlossen zu einem anderen Status zu ändern.</value> + </entry> <entry> <key>Create new campaign step</key> <value>Neue Kampagnenstufe erstellen</value> @@ -29,6 +37,10 @@ <key>Open in mosaico</key> <value>In Mosaico öffnen</value> </entry> + <entry> + <key>To re-opening tickets, please use the corresponding action.</key> + <value>Nutzen Sie bitte die entsprechende Aktion, um Tickets wiederzueröffnen.</value> + </entry> <entry> <key>Single (Service/Internal)</key> <value>Einzel (Service/Intern)</value> @@ -45,6 +57,10 @@ <key>Single (Service/All)</key> <value>Einzel (Service/Alle)</value> </entry> + <entry> + <key>You tried to change the status of \"%0\" tickets from 'ended' to another status.</key> + <value>Sie haben versucht den Status von \"%0\" Tickets von 'abgeschlossen zu einem anderen Status zu ändern.</value> + </entry> <entry> <key>Ticket was duplicated by</key> <value>Ticket wurde dupliziert. Anwender</value> @@ -129,7 +145,7 @@ <key>Template</key> </entry> <entry> - <key>Use all service ticket categories</key> + <key>Use all serviceticket categories</key> <value>Alle Serviceticket Kategorien verwenden</value> </entry> <entry> @@ -361,7 +377,7 @@ <value>Keine Werbung</value> </entry> <entry> - <key>Contact & Service ticket</key> + <key>Contact & Serviceticket</key> <value>Kontakt & Serviceticket</value> </entry> <entry> @@ -12502,6 +12518,10 @@ Bitte Datumseingabe prüfen</value> <entry> <key>per mail</key> </entry> + <entry> + <key>Status change skipped!</key> + <value>Statusänderung übersprungen!</value> + </entry> <entry> <key>Send digital Advertisingmaterials & complete Workflow Task</key> </entry> @@ -14165,12 +14185,12 @@ Bitte Datumseingabe prüfen</value> <key>2</key> </entry> <entry> - <key>Service ticket category</key> - <value>Serviceticket Kategorie</value> + <key>Serviceticket category</key> + <value>Serviceticket-Kategorie</value> </entry> <entry> - <key>Service ticket categories</key> - <value>Serviceticket Kategorien</value> + <key>Serviceticket categories</key> + <value>Serviceticket-Kategorien</value> </entry> <entry> <key>Service tickets</key> @@ -14437,6 +14457,10 @@ Bitte Datumseingabe prüfen</value> <entry> <key>Employees for Employee groups</key> </entry> + <entry> + <key>Status changes skipped!</key> + <value>Statusänderungen übersprungen!</value> + </entry> <entry> <key>Last Click</key> </entry> @@ -14525,13 +14549,19 @@ Bitte Datumseingabe prüfen</value> <key>New Service ticket</key> </entry> <entry> - <key>Serviceticket category</key> + <key>Service ticket category</key> + <value>Serviceticket-Kategorie</value> </entry> <entry> - <key>Serviceticket categories</key> + <key>Use all service ticket categories</key> </entry> <entry> - <key>Contact & Serviceticket</key> + <key>Contact & Service ticket</key> + <value>Kontakt & Serviceticket</value> + </entry> + <entry> + <key>Service ticket categories</key> + <value>Serviceticket-Kategorien</value> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 3dd33ba156acb9bec9781d2c324a4f835b8a95df..f06ac690be59f16001a28df96c379a715a72235c 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -11231,6 +11231,24 @@ <entry> <key>Service ticket categories</key> </entry> + <entry> + <key>You tried to change the status of \"%0\" tickets from 'ended' to another status.</key> + </entry> + <entry> + <key>The status-change of these tickets was skipped. Any other changes were carried out.</key> + </entry> + <entry> + <key>To re-opening tickets, please use the corresponding action.</key> + </entry> + <entry> + <key>Status change skipped!</key> + </entry> + <entry> + <key>You tried to change the status of a ticket from 'ended' to another status.</key> + </entry> + <entry> + <key>Status changes skipped!</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language>