System-Skriptsprache: OLTP-Funktionen, Funktionen für Werkskalender (Calendar functions)

Zu den Funktionen für Werkskalender gehören u. a. Funktionen, um Tagesarten auszuwerten und Arbeitstage gemäß dem Werkskalender einem Zeitpunkt hinzuzufügen:

Allgemeine Informationen zu den OLTP-Funktionen der System-Skriptsprache erhalten Sie im Artikel System-Skriptsprache: OLTP-Funktionen.

addWorkingDays

Name addWorkingDays
Beschreibung addWorkingDays fügt einem Zeitpunkt Werktage gemäß dem Standard-Werkskalender einer Organisation hinzu.
Signaturen Timestamp addWorkingDays(String organization, Timestamp time, Number days)

Timestamp addWorkingDays(Guid organization, Timestamp time, Number days)

Parameter organization ist die Identifikation oder Guid einer Organisation.

time ist der Zeitpunkt, dem Werktage hinzugefügt werden sollen.

days ist die Anzahl Werktage zum Hinzufügen.

Ergebnis Die Funktion gibt den Zeitpunkt time zuzüglich days Werktage zurück, gemäß dem Werkskalender mit der in der Customizing-Funktion Allgemein für die Organisation organization hinterlegten Werkskalenderart. Das Ergebnis ist immer ein Werktag.
Fehlerquellen Ist für die Organisation kein Werkskalender mit der Standard-Werkskalenderart erfasst, führt die Funktion zu einem Laufzeitfehler.
Beispiele addWorkingDays("90000", now(), 10) gibt den Zeitpunkt 10 Werktage in der Zukunft gemäß dem StandardWerkskalender der Organisation 90000 zurück.

addWorkingDays("90000", now(), -10) gibt den Zeitpunkt 10 Werktage in der Vergangenheit zurück.

setActivityDuration(seconds(activity:creationTime, addWorkingDays(parameters.object->OrderDeliveryData->StorageArea:organizationalUnit, endOfDay(activity:creationTime), 3))) bestimmt das geplante Ende einer Aktivität auf das Ende des dritten Werktages gemäß dem Standard-Werkskalender der Lagerlogistikorganisation des im Vertriebsauftrag (parameters.object) hinterlegten Lagerortes.

Kontext OLTP
Hinweise Verwenden Sie die Funktion addWorkingDays, um mithilfe der Funktion setActivityWorkDuration die geplante Bearbeitungsdauer einer Workflow-Aktivität zu bestimmen.
Siehe auch workingDays

Folgendes Beispiel entstammt der Aktivitätsdefinition help.addWorkingDays.

function create()
{
var p_organization := parameters.ORGANIZATION;
var p_time := parameters.TIME;
var p_days := parameters.DAYS;

var r_addWorkingDays := addWorkingDays(loadOrganization(p_organization):guid, p_time, p_days);

result.IS_NULL := isNull(r_addWorkingDays);
if (not isNull(r_addWorkingDays))
result.NEW_TIME := r_addWorkingDays;
}

 

Beispiel: addWorkingDays in JavaScript implementieren

Folgendes Beispiel aus der Aktivitätsdefinition help.js.addWorkingDays zeigt, wie Deklarationen, die in JavaScript erfasst sind, Methoden in Java aufrufen können. Durch die Verwendung von JavaScript stehen unterschiedliche lesende Methoden in Java-Klassen zur Verfügung, die keine Datenbanktransaktionen absetzen.

/**
* Shifts a date by a specified number of days
*
* Parameters:
* calendarType        default calendar type of organization
* date                start date
* days                number of days (negative numbers allowed)
* onlyWorkingDays     use only working days
* resultIsWorkingDay  result must be a working day
* standardizeResult   result is start of day in the time zone
*
* Return value:       the result date
*
* Signature:
* public CisDate addDays(byte[] calendarType, CisDate date,
*   int days, boolean onlyWorkingDays, boolean resultIsWorkDay,
*   boolean standardizeResult) throws IllegalStateException
*/

function create()
{
var p_organization = parameters.ORGANIZATION;
var p_date = parameters.DATE;
var p_workingDays = parameters.WORKING_DAYS;
var p_onlyWorkingDays = parameters.ONLY_WORKING_DAYS != 0;
var p_resultIsWorkingDay = parameters.RESULT_IS_WORKING_DAY != 0;
var p_standardizeResult = true;

var cisEnvironment = Java.type(„com.cisag.pgm.appserver.CisEnvironment“).getInstance();
var objectManager = cisEnvironment.getObjectManager();

var organization = objectManager.getObject(Java.type(„com.cisag.app.multiorg.obj.Organization“).buildByCodeKey(p_organization));
var calendarViewLogic = Java.type(„com.cisag.app.general.calendar.log.CalendarViewLogic“).getInstance();
var calendarTypeGuid = calendarViewLogic.getDefaultCalendarType(organization.getGuid()) ;

var context = cisEnvironment.getContext();
var cisCalendar = context.getCisCalendar();
var date = Java.type(„com.cisag.pgm.datatype.CisDateUtility“).createCisDate(cisCalendar.getTimeZoneGuid(), p_date);

var resultDate = calendarViewLogic.addDays(calendarTypeGuid, date, p_workingDays, p_onlyWorkingDays, p_resultIsWorkingDay, p_standardizeResult);

result.RESULT_DATE = resultDate;
}

 

Die Aktivitätsdefinition help.js.addWorkingDays.call zeigt, wie help.js.addWorkingDays aufgerufen werden kann.

function create()
{
var params := new(HashMap);
params.ORGANIZATION := parameters.ORGANIZATION;
params.DATE := parameters.DATE;
params.WORKING_DAYS := parameters.WORKING_DAYS;
params.ONLY_WORKING_DAYS := parameters.ONLY_WORKING_DAYS;
params.RESULT_IS_WORKING_DAY := parameters.RESULT_IS_WORKING_DAY;

var calendarDays := call("help.js.addWorkingDays", params);

result.RESULT_DATE := cast(Timestamp, calendarDays.RESULT_DATE);
}

 

getDayType

Name getDayType
Beschreibung getDayType gibt den Tagestyp eines Zeitpunkts gemäß dem Standard-Werkskalender einer Organisation zurück.
Signaturen Number getDayType(String organization, Timestamp time)

Number getDayType(Guid organization, Timestamp time)

Parameter organization ist die Identifikation oder Guid einer Organisation.

time ist der Zeitpunkt, dessen Tagesart ermittelt werden soll.

Ergebnis Die Funktion gibt den Tagestyp von time gemäß dem Werkskalender mit der in der Customizing-Funktion Allgemein für die Organisation organization hinterlegten Werkskalenderart zurück. Der Tagestyp basiert auf dem ValueSet com.cisag.app.general.DayType und hat folgende Werte.

  1. Arbeitstag
  2. Kein Arbeitstag
  3. Feiertag
Fehlerquellen Ist für die Organisation kein Werkskalender mit der Standard-Werkskalenderart erfasst, führt die Funktion zu einem Laufzeitfehler.
Beispiele getDayType("90000", now()) gibt den Tagestyp des heutigen Tages gemäß dem Standard-Werkskalender der Organisation 90000 zurück.
Kontext OLTP
Hinweise
Siehe auch

Folgendes Beispiel entstammt der Aktivitätsdefinition help.getDayType.

const DayType as valueSet(com.cisag.app.general.DayType);

function create()
{
var p_organization := parameters.ORGANIZATION;
var p_time := parameters.TIME;

var r_dayType := getDayType(loadOrganization(p_organization):guid, p_time);

result.IS_NULL := isNull(r_dayType);
if (not isNull(r_dayType))
result.DAY_TYPE := valueSetDescription(DayType, r_dayType);
}

 

workingDays

Name workingDays
Beschreibung workingDays gibt die Anzahl Werktage zwischen zwei Zeitpunkten gemäß dem Standard-Werkskalender einer Organisation zurück.
Signaturen Number workingDays(String organization, Timestamp from, Timestamp until)

Number workingDays(Guid organization, Timestamp from, Timestamp until)

Parameter organization ist die Identifikation oder Guid einer Organisation.

from ist ein Zeitpunkt am ersten Kalendertag.

until ist ein Zeitpunkt am letzten Kalendertag.

Ergebnis Die Funktion gibt die Anzahl Werktage zwischen den Kalendertagen von from und until zurück, gemäß dem Werkskalender mit der in der Customizing-Funktion Allgemein für die Organisation organization hinterlegten Werkskalenderart. Sind die beiden Zeitpunkte from und until am gleichen Kalendertag, dann wird der Wert 0 zurückgegeben.
Fehlerquellen Ist für die Organisation kein Werkskalender mit der Standard-Werkskalenderart erfasst, führt die Funktion zu einem Laufzeitfehler.
Beispiele workingDays("90000", parameters.object:date, now()) gibt die Anzahl Werktage zwischen einem von parameters.object referenzierten Beleg und dem aktuellen Tag zurück. Wird der Ausdruck beim Erzeugen und Ausgeben eines Lieferscheins z. B. für einen Vertriebsauftrag ausgewertet, dann könnte dies die Dauer in Werktagen zwischen dem Erfassen des Vertriebsauftrags und der Lieferung sein.
Kontext OLTP
Hinweise
Siehe auch addWorkingDays

Folgendes Beispiel entstammt der Aktivitätsdefinition help.workingDays.

function create()
{
var p_organization := parameters.ORGANIZATION;
var p_from := parameters.FROM;
var p_until := parameters.UNTIL;

r_workingDays := workingDays(loadOrganization(p_organization):guid, p_from, p_until);

result.IS_NULL := isNull(r_workingDays);
if (not isNull(r_workingDays))
result.WORKING_DAYS := r_workingDays;
}

Czy ten artykuł był pomocny?