Skip to content
Snippets Groups Projects
onActionProcess.js 4.76 KiB
import("Keyword_lib");
import("Address_lib");
import("Person_lib");
import("Contact_lib");
import("KeywordRegistry_basic");
import("system.translate");
import("Sql_lib");
import("AttributeRegistry_basic");
import("system.datetime");
import("system.logging");
import("Communication_lib");
import("system.db");
import("system.vars");
import("system.neon");
import("system.calendars");
import("Calendar_lib");
import("system.date");
import("Context_lib");
import("system.util");
import("system.eMath");
import("system.text");


var entry;
var params = {};
var pointOfContact;
var mailAffectedUser = [];
var uidAppointment;
var values;
var columns;
var columnTypes;
var update;
var i;

var selectionRowData = vars.get("$sys.selectionRows");

var uid = selectionRowData[0].UID;
var isGroup = selectionRowData[0].ISGROUP; //not Bool
var entryDateAsLong = selectionRowData[0].ENTRYDATE;
var entryDate = datetime.toDate(entryDateAsLong, "dd-MM-yyyy");
var startTime = selectionRowData[0].BEGIN_TIME;
var endTime = selectionRowData[0].END_TIME;
var organisation_id = selectionRowData[0].ORGANISATION_ID;
var organisationName = OrganisationUtils.getNameByOrganisationId(organisation_id);
var contact_id = selectionRowData[0].CONTACT_ID;
var contactName = ContactUtils.getFullTitleByContactId(contact_id);
var contactMail = CommUtil.getStandardSubSqlMail(contact_id)
var contactData = newSelect("CONTACT.DEPARTMENT, CONTACT.CONTACTROLE")
                            .from("CONTACT")
                            .where("CONTACT.CONTACTID", contact_id)
                            .arrayRow()
var department = contactData[0];
var contactRole = contactData[1];
var addressId = newSelect("CONTACT.ADDRESS_ID")
                            .from("CONTACT")
                            .where("CONTACT.CONTACTID", organisation_id)
                            .cell();
var organisationAddress = new AddrObject(organisation_id);
var organisationAddressFormatted = organisationAddress.getFormattedAddress(false, "{salutation_name}\n {street} {buildingno}\n {country_short} - {zip} {city}");
var contactCommunication = newSelect("COMMUNICATION.MEDIUM_ID, COMMUNICATION.ADDR")
                                        .from("COMMUNICATION")
                                        .where("COMMUNICATION.CONTACT_ID", contact_id)
                                        .table();
if(contactCommunication.length > 0)
{
    var communicationString;
    for (i = 0; i < contactCommunication.length; i++) 
    {
            communicationString += KeywordUtils.getViewValue($KeywordRegistry.communicationMedium(), contactCommunication[i][0]) + ": " 
                                    + contactCommunication[i][1] + "</br>"
    }
    communicationString = communicationString.substring(9);
}
var summary = translate.text("Visit") +  " " + contactName + " | "+  organisationName;
var description = contactName + "</br>"
                  + department + "</br>"
                  + contactRole + "</br>"
                  + communicationString + "</br>" + "</br>"
                  + organisationName + "</br>"
                  + organisationAddressFormatted;

userMailto = [];
userMailto.push("mailto:" + contactMail, "CN:" + contactMail);
mailAffectedUser.push(text.encodeMS(userMailto));


var startdate = entryDate + " " + datetime.toDate(startTime, "HH:mm:ss.S");
startdate = datetime.toLong(startdate, "dd-MM-yyyy HH:mm:ss.S");

var duration = eMath.subInt(endTime, startTime);
    
entry = CalendarUtil.createEntry("", calendars.VEVENT, summary, description, false, false, false,
                vars.get("$sys.user"), [vars.get("$sys.user")], startdate, duration, null, calendars.STATUS_TENTATIVE, null, null);
            
params["Entry_param"] = JSON.stringify(entry);
uidAppointment = calendars.insert([entry]);
    
columns = ["AB_APPOINTMENTLINK_ID",
            "APPOINTMENT_ID",
            "OBJECT_TYPE",
            "OBJECT_ROWID"]
            
columnTypes = db.getColumnTypes("AB_APPOINTMENTLINK", columns, db.getCurrentAlias());
    
values = [util.getNewUUID(),
          uidAppointment[0],
          "Organisation",
          organisation_id]
insert = db.insertData("AB_APPOINTMENTLINK", columns, columnTypes, values)
    
values = [util.getNewUUID(),
          uidAppointment[0],
          "Person",
          contact_id]
insert = db.insertData("AB_APPOINTMENTLINK", columns, columnTypes, values)
    
values = [$KeywordRegistry.visitPlanEntryStatus$Appointmentarranged(), uidAppointment[0]];
columns = ["STATUS", "APPOINTMENT_ID"];
columnTypes = db.getColumnTypes("VISITPLANENTRY", columns, db.getCurrentAlias());
    
update = newWhere("VISITPLANENTRY.VISITPLANENTRYID", uid)
                        .updateData(true, "VISITPLANENTRY", columns, columnTypes, values);

neon.setFieldValue("$field.STATUS", $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged());
neon.refreshAll();