System-Skriptsprache: OLTP-Funktionen, Funktionen für Beträge und Währungen (Currency functions)

Zu den Funktionen für Beträge und Währungen gehört die Funktion loadCurrency, um eine Währung zu öffnen.

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

loadCurrency

Name loadCurrency
Beschreibung loadCurrency gibt eine Währung als typisiertes CisObject zurück.
Signaturen CisObject(com.cisag.app.general.obj.Currency) loadCurrency(String isoCode)

CisObject(com.cisag.app.general.obj.Currency) loadCurrency(Guid guid)

Parameter guid ist die Guid einer Währung.

isoCode ist die Identifikation einer Währung.

Ergebnis Die Funktion gibt die zurzeit gültige Währung als ein typisiertes CisObject zurück.
Fehlerquellen Keine
Beispiele (loadCurrency("EUR") gibt ein typisiertes CisObject für die Währung mit dem ISO-Code EUR zurück.

loadCurrency(getCorporateCurrency(cast(Guid, getAttribute(parameters.object, "_organization")))):isoCode gibt den ISO-Code der Leitwährung der Organization zurück, in dessen Kontext das vom parameters.object referenzierte Business Object erfasst wurde.

Kontext OLTP
Hinweise
Siehe auch

Folgendes Beispiel aus der Aktivitätsdefinition help.loadCurrency öffnet eine Währung über dessen ISO-Code und gibt die Bezeichnung zurück.

function create()
{
var p_isoCode := parameters.ISO_CODE;
var r_currency := loadCurrency(p_isoCode);

result.IS_NULL := isNull(r_currency);
if (not isNull(r_currency))
result.DESCRIPTION := r_currency:description;
}

 

Weitere Funktionsdeklarationen für Beträge und Währungen

Dieses Kapitel schlägt weitere Funktionsdeklarationen für Beträge und Währungen vor, die Sie in Ihrem System erfassen und verwenden können. Die Funktionsdeklarationen sind ohne Gewähr und dienen in erster Linie dem Erlernen der System-Skriptsprache.

amountCorporate

Name amountCorporate
Beschreibung amountCorporate gibt einen Hauswährungsbetrag in der Leitwährung einer Organisation zurück.
Signaturen Number amountCorporate(Number amount1, Number amount2, Number amount3, Guid organization)

Number amountCorporate(domesticAmount CisObject( com.cisag.app.general.obj.DomesticAmount, Guid organization)

Parameter amount1 ist der Betrag in der ersten Hauswährung.

amount2 ist der Betrag in der zweiten Hauswährung.

amount3 ist der Betrag in der dritten Hauswährung.

domesticAmount ist ein Part für eine Hauswährung.

organization ist die Guid der Organisation, für die der Hauswährungsbetrag erfasst wurde.

Ergebnis Die Funktion gibt den Hauswährungsbetrag domesticAmount in der Leitwährung der Organisation zurück.

Ist die erste Hauswährung von organization die Leitwährung, dann wird amount1 zurückgegeben. Ist die zweite Hauswährung von organization die Leitwährung, dann wird amount2 zurückgegeben. Ist die dritte Hauswährung von organization die Leitwährung, dann wird amount3 zurückgegeben. Ist organization keine Firma, dann wird die Leitwährung der Firma, zu der organization zugeordnet ist, herangezogen.

Fehlerquellen Keine
Beispiele
amountCorporate(
parameters.object:totalValues.netValueDomestic.
amount1,parameters.object:totalValues.netValueDomestic.amount2, parameters.object:totalValues.
netValueDomestic.amount3, cast(Guid, getAttribute(parameters.object, "_organization")))

gibt den Gesamt-Nettobetrag in der aktuellen Leitwährung der Organization zurück, in dessen Kontext das vom parameters.object referenzierte Business Object erfasst wurde. amountCorporate(dboDomesticAmount("EXTPartner", loadPartner("10010"), "CREDIT_LIMIT_ALT"), loadOrganization("90000"):guid) gibt den Wert des weiteren Feldes vom Feldtyp Betrag in Hauswährung in der Leitwährung der Firma 90000 zurück.

Kontext OLTP
Hinweise Business Objects mit einem Hauswährungsbetrag besitzen die Attribute _organization und _currencyCombo. Das erste Attribut verweist auf die Organisation, für die der Hauswährungsbetrag erfasst wurde. Das zweite Attribut verweist auf die Kombination von Hauswährungen, welche die Organisation bzw. der Hauswährungsbetrag verwendet.
Siehe auch getCorporateCurrency

Folgendes Beispiel aus der Aktivitätsdefinition help.amountCorporate zeigt, wie aus einem aus bis zu drei Hauswährungen bestehenden Hauswährungsbetrag der Betrag in der Leitwährung der Firma bestimmt werden kann.

function create()
{
var p_orderType := parameters.ORDER_TYPE;
var p_orderNumber := parameters.ORDER_NUMBER;

var orderType := getByBusinessKey(CisObject(com.cisag.app.sales.obj.SalesOrderType), p_orderType);
var order := getByBusinessKey(CisObject(com.cisag.app.sales.obj.SalesOrder), orderType:guid, p_orderNumber);
var totalGrossValueCorporate := amountCorporate(
order:totalValues.grossValueDomestic.amount1,
order:totalValues.grossValueDomestic.amount2,
order:totalValues.grossValueDomestic.amount3,
cast(Guid, getAttribute(order, "_organization")));

result.VALUE := totalGrossValueCorporate;
}

function amountCorporate(amount1 as Number, amount2 as Number, amount3 as Number, org as Guid) as Number
{
var amountCorporate := 0;
var baseFunction := getCustomizingValue("com.cisag.app.general.Base", loadOrganization(org):financialsOrganization);

if (not isNull(baseFunction)) {
if (baseFunction:corporateCurrency = 1)
amountCorporate := amount1;
if (baseFunction:corporateCurrency = 2)
amountCorporate := amount2;
if (baseFunction:corporateCurrency = 3)
amountCorporate := amount3;
}
return amountCorporate;
}

function amountCorporate2(domesticAmount as CisObject(com.cisag.app.general.obj.DomesticAmount), org as Guid) as Number
{
var amountCorporate := 0;
var baseFunction := getCustomizingValue("com.cisag.app.general.Base", loadOrganization(org):financialsOrganization);

if (not isNull(baseFunction)) {
if (baseFunction:corporateCurrency = 1)
amountCorporate := domesticAmount:amount1;
if (baseFunction:corporateCurrency = 2)
amountCorporate := domesticAmount:amount2;
if (baseFunction:corporateCurrency = 3)
amountCorporate := domesticAmount:amount3;
}
return amountCorporate;
}

 

convertCurrency

Name convertCurrency
Beschreibung convertCurrency rechnet einen Betrag in eine andere Währung um.
Signaturen Number convertCurrency(Number amount, Guid source, Guid target)

Number convertCurrency(Number amount, Guid source, Guid target, Timestamp conversionDate)

Parameter amount ist der Betrag, der umgerechnet werden soll.

source ist die Guid oder Identifikation der Quellwährung.

target ist die Guid oder Identifikation der Zielwährung.

Ergebnis Die Funktion rechnet einen Betrag von einer Quellwährung in eine Zielwährung um. Wird conversionDate nicht angegeben, dann wird der Betrag gemäß der zurzeit gültigen Wechselkurse umgerechnet.
Fehlerquellen Gibt es keinen gültigen Wechselkurs, dann wird der Betrag 0 zurückgegeben.
Beispiele convertCurrency(parameters.object:totalValues.grossValue.amount, parameters.object:totalValues.grossValue.currency, getCorporateCurrency(cast(Guid, getAttribute(parameters.object, "_organization")))) rechnet den Gesamt-Bruttobetrag eines vom parameters.object referenzierten Vertriebsauftrags in der Leitwährung zum aktuell gültigen Wechselkurs um.
Kontext OLTP
Hinweise
Siehe auch

Folgendes Beispiel aus der Aktivitätsdefinition help.convertCurrency zeigt, wie ein Betrag zwischen zwei Währungen umgerechnet werden kann. Die Funktion convertCurrency rechnet einen Betrag zu den aktuell gültigen Wechselkursen um, wobei die Funktion convertCurrenncyAt auch historische Wechselkurse verwendet.

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

function create()
{
var p_amount := parameters.AMOUNT;
var p_source := parameters.SOURCE;
var p_target := parameters.TARGET;
var p_conversionDate := parameters.CONVERSION_DATE;
var r_convertedAmountAt := 0;

var convertedAmountAt := convertCurrencyAt(p_amount, loadCurrency(p_source):guid, loadCurrency(p_target):guid, p_conversionDate);
if (not isNull(convertedAmountAt))
r_convertedAmountAt := convertedAmountAt;

result.IS_NULL := isNull(r_convertedAmountAt);
result.CONVERTED_AMOUNT := r_convertedAmountAt;
}

function convertCurrency(amount as Number, sourceCurrency as Guid, targetCurrency as Guid) as Number
{
var convertedAmount := 0;
var useReverseQuotation := false;
var company := cast(Guid, getCustomizingValue("com.cisag.app.General"):company);
var exchangeRateUse := cast(Guid, getCustomizingValue("com.cisag.app.general.Base", company):exchangeRateUse);
var quotation := getCustomizingValue("com.cisag.app.general.Base", company):exchangeRateQuotation;
var factor := 1;

var exchangeRate := getByBusinessKey(CisObject(com.cisag.app.general.obj.ExchangeRate), exchangeRateUse, sourceCurrency, targetCurrency);
if (isNull(exchangeRate)) {
exchangeRate := getByBusinessKey(CisObject(com.cisag.app.general.obj.ExchangeRate), exchangeRateUse, targetCurrency, sourceCurrency);
useReverseQuotation := true;
}
if (not isNull(exchangeRate)) {
if (exchangeRate:factor = 2) factor := 10;
if (exchangeRate:factor = 3) factor := 100;
if (exchangeRate:factor = 4) factor := 1000;
if (exchangeRate:factor = 5) factor := 10000;
if ((useReverseQuotation = false and quotation = ExchangeRateQuotation.DIRECT) or
(useReverseQuotation = true and quotation = ExchangeRateQuotation.INDIRECT))
convertedAmount := (amount * factor) / exchangeRate:middleRate;
else
convertedAmount := (amount * exchangeRate:middleRate) / factor;
}
return convertedAmount;
}

function convertCurrencyAt(amount as Number, sourceCurrency as Guid, targetCurrency as Guid, conversionDate as Timestamp) as Number
{
var convertedAmount := 0;
var useReverseQuotation := false;
var company := cast(Guid, getCustomizingValue("com.cisag.app.General"):company);
var exchangeRateUse := cast(Guid, getCustomizingValue("com.cisag.app.general.Base", company):exchangeRateUse);
var quotation := getCustomizingValue("com.cisag.app.general.Base", company):exchangeRateQuotation;
var factor := 1;

var OQL :=
"SELECT FROM com.cisag.app.general.obj.ExchangeRate o " +
"WHERE o:exchangeRateUse = ? AND o:sourceCurrency = ? AND o:targetCurrency = ? " +
" AND o:validFrom <= toTimeStamp(„" + timeZoneId(today()) + "„, " +
format(year(conversionDate)) + ", " + format(month(conversionDate)) + ", " + format(day(conversionDate)) + ", " +
format(hour(conversionDate)) + ", " + format(minute(conversionDate)) + ", " + format(second(conversionDate)) + ", " +
format(millisecond(conversionDate)) + ") " +
" AND o:validUntil > toTimeStamp(„" + timeZoneId(today()) + "„, " +
format(year(conversionDate)) + ", " + format(month(conversionDate)) + ", " + format(day(conversionDate)) + ", " +
format(hour(conversionDate)) + ", " + format(minute(conversionDate)) + ", " + format(second(conversionDate)) + ", " +
format(millisecond(conversionDate)) + ")";
var oList := getCisObjectList("OLTP", OQL, list(exchangeRateUse, sourceCurrency, targetCurrency), 1);
if (size(oList) = 0) {
oList := getCisObjectList("OLTP", OQL, list(exchangeRateUse, targetCurrency, sourceCurrency), 1);
useReverseQuotation := true;
}
for (exchangeRate as CisObject(com.cisag.app.general.obj.ExchangeRate) : oList) {
if (exchangeRate:factor = 2) factor := 10;
if (exchangeRate:factor = 3) factor := 100;
if (exchangeRate:factor = 4) factor := 1000;
if (exchangeRate:factor = 5) factor := 10000;
if ((useReverseQuotation = false and quotation = ExchangeRateQuotation.DIRECT) or
(useReverseQuotation = true and quotation = ExchangeRateQuotation.INDIRECT))
convertedAmount := (amount * factor) / exchangeRate:middleRate;
else
convertedAmount := (amount * exchangeRate:middleRate) / factor;
}
return convertedAmount;
}

 

getCorporateCurrency

Name getCorporateCurrency
Beschreibung getCorporateCurrency gibt die Guid für die Leitwährung einer Organisation zurück.
Signaturen Guid getCorporateCurrency(Guid organization)
Parameter organization ist die Guid der Organisation, deren Leitwährung ermittelt werden soll.
Ergebnis Die Funktion gibt die Guid für die Leitwährung der Organisation organization zurück.

Ist organization keine Firma, dann wird die Leitwährung der Firma, zu der organization zugeordnet ist, zurückgegeben.

Fehlerquellen Keine
Beispiele loadCurrency(getCorporateCurrency(cast(Guid, getAttribute(parameters.object, "_organization")))):isoCode gibt den ISO-Code der Leitwährung der Organisation zurück, in dessen Kontext das vom parameters.object referenzierte Business Object erfasst wurde.
Kontext OLTP
Hinweise
Siehe auch amountCorporate

Folgendes Beispiel aus der Aktivitätsdefinition help.getCorporateCurrency zeigt, wie die Customizing-Funktion Allgemein abgefragt werden kann, um die Leitwährung einer Firma zu bestimmen.

function create()
{
var p_organization := parameters.ORGANIZATION;
var r_corporateCurrency := getCorporateCurrency(loadOrganization(p_organization):guid);

result.PRIMARY_CURRENCY := loadCurrency(r_corporateCurrency):isoCode;
}

function getCorporateCurrency(org as Guid) as Guid
{
var corporateCurrency as Guid;
var baseFunction := getCustomizingValue("com.cisag.app.general.Base", loadOrganization(org):financialsOrganization);

if (not isNull(baseFunction)) {
corporateCurrency := baseFunction:corporateCurrencyGuid;
}
return corporateCurrency;
}

 

getCurrency1

Name getCurrency1
Beschreibung getCurrency1 gibt die Guid für die erste Hauswährung des Mandanten zurück.
Signaturen Guid getCurrency1()
Parameter Keine
Ergebnis Die Funktion gibt die Guid für die erste Hauswährung des Mandanten zurück.
Fehlerquellen Keine
Beispiele loadCurrency(getCurrency1()):isoCode gibt den ISO-Code der ersten Hauswährung des Mandanten zurück.
Kontext OLTP
Hinweise Für eine Firma können bis zu 3 Hauswährungen festgelegt werden. Die Hauswährungen 2 und 3 sind organisationsspezifisch. Die Hauswährung 1 ist hingegen mandantenweit einheitlich, d. h. alle Firmen besitzen die gleiche Hauswährung 1.
Siehe auch getCurrency2, getCurrency3

Folgendes Beispiel aus der Aktivitätsdefinition help.getCurrency1 zeigt, wie die Customizing-Funktion Allgemein für den Mandanten abgefragt werden kann, um die erste Hauswährung aller Firmen zu bestimmen.

function create()
{
var r_currency1 := getCurrency1();

result.CURRENCY1 := loadCurrency(r_currency1):isoCode;
}

function getCurrency1() as Guid
{
var currency1 as Guid;
var company := loadOrganization(getCustomizingValue("com.cisag.app.General"):company);
var baseFunction := getCustomizingValue("com.cisag.app.general.Base", company:guid);

if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency1 := combination:currency1;
}
return currency1;
}

 

getCurrency2

Name getCurrency2
Beschreibung getCurrency2 gibt die Guid für die zweite Hauswährung einer Organisation zurück.
Signaturen Guid getCurrency2(Guid organization)
Parameter Keine
Ergebnis Die Funktion gibt die Guid für die zweite Hauswährung von organization zurück.

Ist organization keine Firma, dann wird die zweite Hauswährung der Firma, zu der organization zugeordnet ist, zurückgegeben.

Fehlerquellen Ist für organization keine zweite Hauswährung festgelegt, dann wird der Wert null zurückgegeben.
Beispiele loadCurrency(getCurrency2(cast(Guid, getAttribute(parameters.object, "_organization")))):isoCode gibt den ISO-Code der zweiten Hauswährung der Organisation zurück, in dessen Kontext das vom parameters.object referenzierte Business Object erfasst wurde.
Kontext OLTP
Hinweise
Siehe auch getCurrency1, getCurrency3

Folgendes Beispiel aus der Aktivitätsdefinition help.getCurrency2 zeigt, wie die Customizing-Funktion Allgemein für eine Firma abgefragt werden kann, um die zweite Hauswährung der Firma zu bestimmen.

function create()
{
var p_organization := parameters.ORGANIZATION;
var r_currency2 := getCurrency2(loadOrganization(p_organization):guid);
result.IS_NULL := isNull(r_currency2);
if (not isNull(r_currency2))
result.CURRENCY2 := loadCurrency(r_currency2):isoCode;
}

function getCurrency2(organization as Guid) as Guid
{
var currency2 as Guid;
var baseFunction := getCustomizingValue("com.cisag.app.general.Base", loadOrganization(organization):guid);

if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency2 := combination:currency2;
}
return currency2;
}

 

getCurrency3

Name getCurrency3
Beschreibung getCurrency3 gibt die Guid für die dritte Hauswährung einer Organisation zurück.
Signaturen Guid getCurrency3(Guid organization)
Parameter Keine
Ergebnis Die Funktion gibt die Guid für die dritte Hauswährung von organization zurück.

Ist organization keine Firma, dann wird die dritte Hauswährung der Firma, zu der organization zugeordnet ist, zurückgegeben.

Fehlerquellen Ist für organization keine dritte Hauswährung festgelegt, dann wird der Wert null zurückgegeben.
Beispiele loadCurrency(getCurrency3(cast(Guid, getAttribute(parameters.object, "_organization")))):isoCode gibt den ISO-Code der dritten Hauswährung der Organisation zurück, in dessen Kontext das vom parameters.object referenzierte Business Object erfasst wurde.
Kontext OLTP
Hinweise
Siehe auch getCurrency1, getCurrency2

Folgendes Beispiel aus der Aktivitätsdefinition help.getCurrency3 zeigt, wie die Customizing-Funktion Allgemein für eine Firma abgefragt werden kann, um die dritte Hauswährung der Firma zu bestimmen.

function create()
{
var p_organization := parameters.ORGANIZATION;
var r_currency3 := getCurrency3(loadOrganization(p_organization):guid);

result.IS_NULL := isNull(r_currency3);
if (not isNull(r_currency3))
result.CURRENCY3 := loadCurrency(r_currency3):isoCode;
}

function getCurrency3(organization as Guid) as Guid
{
var currency3 as Guid;
var baseFunction := getCustomizingValue("com.cisag.app.general.Base", loadOrganization(organization):guid);

if (not isNull(baseFunction)) {
var combination := getByPrimaryKey(CisObject(com.cisag.app.multiorg.obj.DomesticCurrencyCombination), baseFunction:combination);
currency3 := combination:currency3;
}
return currency3;
}

 

Czy ten artykuł był pomocny?