Funkcje środowiska uruchomieniowego języka X++ — funkcje biznesowe

W tym artykule opisano funkcje środowiska uruchomieniowego biznesowego.

Te funkcje wprowadzają dane finansowe i obliczają formuły.

cTerm

Oblicza liczbę okresów, które są wymagane dla bieżącej wartości inwestycyjnej w celu uzyskania wartości docelowej.

Syntax

real cTerm(real interest, real future_value, real current_value)

Parameters

Parameter Description
interest Stopa oprocentowania.
future_value Wartość docelowa.
current_value Bieżąca wartość inwestycji.

Return value

Liczba okresów wymaganych do osiągnięcia future_value.

Remarks

Parametry current_value i future_value muszą używać tego samego znaku (plus lub minus).

Example

static void cTermExample(Args _arg)
{
    real r;
    ;
    r = cTerm(10.0, 500.00, 100.00);
    print "The cTerm is " + num2Str(r, 2, 2, 1, 1);
    pause;
}

ddb

Oblicza przyspieszoną amortyzację środka trwałego.

Syntax

real ddb(real price, real scrap, real life, int period)

Parameters

Parameter Description
price Cena zakupu środka trwałego.
scrap Wartość reszty zasobu, który zapisujesz.
life Oczekiwany okres istnienia zasobu.
period Okres obliczania amortyzacji.

Return value

Amortyzacja środka trwałego.

Remarks

Wartość księgowa dla określonego okresu jest równa cenie zakupu pomniejszonej o skumulowaną amortyzację dla poprzednich okresów:

  • Wartość księgowa okresu 1 = Cena
  • Wartość księgowa okresu 2 = wartość księgowa okresu 1 — amortyzacja dla okresu 1
  • Wartość księgowa okresu n = wartość księgowa okresu (n–1) — amortyzacja okresu (n–1)

Istnieją trzy odmiany obliczania amortyzacji: Jeśli okres życia > :

  • Amortyzacja = 0

If (wartość księgowa okresu n) — (wartość księgowa okresu n) × 2 ÷ życia) < Wartość resztowa:

  • Amortyzacja = (wartość księgowa okresu n) — wartość resztowa

We wszystkich innych przypadkach: Amortyzacja = (wartość księgowa okresu n) × 2 ÷ Life funkcje syd i sln obliczają również amortyzację środka trwałego. Funkcje syd i ddb umożliwiają wyższą amortyzację w poprzednich latach, podczas gdy sln oblicza amortyzację liniową.

ddb(12000,2000,10,1); //Returns the value 2400.
ddb(12000,2000,10,3); //Returns the value 1536.

dg

Oblicza stosunek składek, który jest oparty na cenie sprzedaży i cenie zakupu. Jeśli wartość parametru sprzedaży wynosi 0,0, nie można wykonać obliczeń.

Syntax

real dg(real sale, real purchase)

Parameters

Parameter Description
sale Cena sprzedaży.
zakup Cena zakupu.

Return value

Współczynnik udziału.

Remarks

dg(1000,300); //Returns the value 0.7.
dg(100,30); //Returns the value 0.7.
dg(20000, 11000); //Returns the value 0.45.

fV

Oblicza przyszłą wartość inwestycji.

Syntax

real fV(real amount, real interest, real life)

Parameters

Parameter Description
amount Kwota zapłacona w każdym okresie.
interest Stopa oprocentowania.
life Liczba okresów inwestycyjnych.

Return value

Przyszła wartość inwestycji.

Remarks

fV(100,0.14,10); //Returns the value 1933.73.
fV(400,0.10,5); //Returns the value 2442.04.

idg

Oblicza cenę sprzedaży na podstawie ceny zakupu i współczynnika wkładu.

real idg(real purchase, real contribution_ratio)

Parameters

Parameter Description
zakup Cena zakupu.
contribution_ratio Współczynnik udziału.

Return value

Cena sprzedaży.

Remarks

Jeśli stosunek udziału jest równy 1,0, nie można wykonać obliczenia. Funkcja idg jest odwrotnością funkcji dg .

idg(300,0.7); //Returns the value 1000.
idg(11000,0.45); //Returns the value 20000.

intvMax

Pobiera liczbę interwałów dla określonego okresu, gdy okres jest podzielony na części określone przez parametr func .

int intvMax(date input_date, date ref_date, int func)

Parameters

Parameter Description
input_date Koniec okresu, który musi być późniejszy niż parametr ref_date .
ref_date Początek okresu.
func Wartość wyliczenia systemu IntvScale wskazująca jednostkę dzielenia.

Remarks

Poniżej przedstawiono możliwe wartości parametru func :

  • None
  • YearMonthDay
  • YearMonth
  • Year
  • MonthDay
  • Month
  • Day
  • YearQuarter
  • Quarter
  • YearWeek
  • Week
  • WeekDay

Example

static void intvMaxExample()
{
    date refDate = str2Date("4/9/2007", 213);
    date inputDate = str2Date("10/5/2007", 213);
    int numberOfIntervals;
    ;
    numberOfIntervals = intvMax(inputDate, refDate, intvScale::YearMonth);
    print numberOfIntervals;
    pause;
}

intvName

Zwraca nazwę interwału, który jest określoną liczbą interwałów przed określoną datą.

str intvName(date input_date, int col, enum func)

Parameters

Parameter Description
input_date Data w pierwszym interwale.
col Liczba interwałów przed datą określoną przez parametr input_date .
func Wartość wyliczenia intvScale .

Return value

Nazwa interwału.

Remarks

Jeśli na przykład parametr func jest wartością wyliczenia IntvScale::WeekDay , ta metoda zwraca nazwę dnia tygodnia. Jeśli parametr func jest wartością wyliczenia IntvScale::Week , ta metoda zwraca ciąg zawierający liczbę tygodni.

Example

static void intvNameExample(Args _args)
{
    date refDate = 2672010;
    str name;
    ;
    name = intvName(refDate, 3,  intvScale::WeekDay);
    Global::info(strfmt("%1 is the output, which indicates the day of the week 3 days after 26\7\2010.", name));
}
/**** Infolog display.
Message (09:56:55 am)
Thu is the output, which indicates the day of the week 3 days after 2672010.
****/

intvNo

Oblicza liczbę interwałów między dwiema datami podczas dzielenia czasu na określone interwały.

Syntax

int intvNo(date input_date, date ref_date, int func)

Parameters

Parameter Description
input_date Data wskazująca koniec okresu
ref_date Data wskazująca początek okresu.
func Wartość wyliczenia intvScale .

Return value

Liczba interwałów między datami określonymi przez parametry ref_date i input_date .

Example

static void intvNoExample(Args _args)
{
    date inputDate = str2Date("1/1/2007", 213);
    date refDate = str2Date("3/1/2007", 213);
    int noOfIntervals;
    ;
    noOfIntervals = intvNo(refDate, inputDate, intvScale::Month);
    print noOfIntervals;
    pause;
    //noOfIntervals now holds the difference in months between March and January (2).
}

intvNorm

Zwraca znormalizowaną datę dla okresu.

Syntax

date intvNorm(date input_date, date ref_date, int func)

Parameters

Parameter Description
input_date Koniec okresu, który musi być późniejszy niż data określona w parametrze ref_date .
ref_date Początek okresu.
func Wartość wyliczenia intvScale wskazująca jednostkę dzielenia interwału.

Return value

Znormalizowana data okresu.

Remarks

Zwracana data jest równa dacie pierwszego dnia w interwale, w którym istnieje data określona w parametrze ref_date .

Example

static void example()
{
    print intvNorm(today(), today()-1, IntVScale::WeekDay);
    pause;
}

pmt

Oblicza kwotę, którą musisz zapłacić za każdy okres, aby spłacić pożyczkę.

Syntax

real pmt(real principal, real interest, real life)

Parameters

Parameter Description
podmiot zabezpieczeń Kwota, którą pierwotnie pożyczyłeś.
interest Stopa procentowa zastosowana w każdym okresie do kwoty, którą pożyczyłeś.
life Liczba okresów, w których spłacasz pożyczkę.

Return value

Kwota, którą musisz zapłacić za każdy okres.

Remarks

Wyrażanie parametrów życia i zainteresowania w tych samych jednostkach czasu. Wartość parametru życia musi być większa niż 0,0.

Example

pmt(4000,0.14,4); //Returns the value 1372.82.
pmt(10000,0.10,20); //Returns the value 1174.60.

pt

Pobiera sumę liczby plus określoną wartość procentową tej liczby.

Syntax

real pt(real amount, real percentage)

Parameters

Parameter Description
amount Oryginalna liczba.
percentage Dodatek procentowy.

Return value

Liczba równa ((kwota ×percentage) + kwota).

Remarks

pt(2000.0,0.10); //Returns the value 2200.0.
pt(20.0,0.10); //Returns the value 22.0.

pv

Oblicza bieżącą wartość renty, w której otrzymujesz kwotę w wielu okresach, a stopa procentowa jest odliczana dla każdego okresu.

Syntax

real pv(real amount, real interest, real life)

Parameters

Parameter Description
amount Kwota, którą płacisz w każdym okresie.
interest Stopa oprocentowania.
life Liczba razy, gdy wartość określona przez parametr amount jest wypłacana.

Return value

Bieżąca wartość renty.

Remarks

pv(300,0.14,4); //Returns the value 874.11.

rate

Oblicza odsetki, które są wymagane dla bieżącej wartości inwestycji, aby uzyskać wartość przyszłą w określonym przedziale czasu.

Syntax

real rate(real _future_value, real _current_value, real _terms)

Parameters

Parameter Description
_future_value Przyszła wartość inwestycji.
_current_value Bieżąca wartość inwestycji.
_terms Liczba okresów, które obejmują inwestycje.

Return value

Obliczona stopa procentowa.

Remarks

rate(10000,1000,20); //Returns the value 0.12.

sln

Pobiera stałą kwotę amortyzacji dla określonego środka trwałego dla każdego okresu amortyzacji.

Syntax

real sln(real price, real scrap, real life)

Parameters

Parameter Description
price Cena zakupu środka trwałego.
scrap Wartość złomu środka trwałego.
life Liczba okresów w oczekiwanym okresie eksploatacji środka trwałego.

Return value

Kwota amortyzacji.

Example

static void slnExample(Args _arg)
{
    real r;
    ;
    r = sln(100.00, 50.00, 50.00);
    print r;
    pause;
}

syd

Oblicza amortyzację środka trwałego w określonym przedziale czasu.

Syntax

real syd(real _price, real _scrap, real _life, int _period)

Parameters

Parameter Description
_price Cena zakupu środka trwałego.
_scrap Wartość złomu środka trwałego.
_life Oczekiwany okres eksploatacji środka trwałego (liczba okresów).
_period Okres obliczania amortyzacji dla.

Return value

Kwota amortyzacji w określonym przedziale czasu.

Remarks

W przeciwieństwie do funkcji sln funkcja syd może używać przyspieszonej amortyzacji dla środka trwałego. Podobnie jak w przypadku funkcji ddb , takie podejście powoduje wyższą amortyzację we wczesnych okresach istnienia środka trwałego.

Example

W poniższych przykładach okresowa amortyzacja jest obliczana dla środka trwałego, który ma cenę zakupu 10 000, wartość złomu 2000 i okres eksploatacji 5. Dla porównania sln(10000,2000,5) oblicza 1600,00 dla każdego okresu.

// Returns the value 2666.67 (for the 1st period).
syd(10000,2000,5,1);
// Returns the value 2133.33 (for the 2nd period).
syd(10000,2000,5,2);
// Returns the value 1600.00 (for the 3rd period).
syd(10000,2000,5,3);
// Returns the value 1066.67 (for the 4th period).
syd(10000,2000,5,4);
// Returns the value 533.33 (for 5th - and final- period).
syd(10000,2000,5,5);

term

Oblicza liczbę okresów, dla których musi zostać uruchomiona inwestycja.

Syntax

real term(real amount, real interest, real future_value)

Parameters

Parameter Description
amount Kwota okresowych inwestycji.
interest Stopa procentowa dla każdego okresu.
future_value Przewidywana przyszła wartość inwestycji

Return value

Liczba okresów, dla których należy uruchomić inwestycję.

Example

static void termExample(Args _args)
{
    print term(400,0.08,5000);  //returns the value '9.01'.
    print term(100,0.14,3000);  //returns the value '12.58'.
    pause;
}