Affärsexekveringsfunktioner för X++

I den här artikeln beskrivs funktionerna för affärskörning.

Dessa funktioner anger finansiella data och beräknar formler.

cTerm

Beräknar antalet perioder som krävs för det aktuella investeringsvärdet för att ge ett målvärde.

Syntax

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

Parameters

Parameter Description
interest Räntesatsen.
future_value Målvärdet.
current_value Det aktuella investeringsvärdet.

Return value

Antalet perioder som krävs för att nå future_value.

Remarks

Parametrarna current_value och future_value måste använda samma tecken (plus eller 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

Beräknar den accelererade avskrivningen för en tillgång.

Syntax

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

Parameters

Parameter Description
price Tillgångens inköpspris.
scrap Restvärdet för den tillgång som du skriver av.
life Tillgångens förväntade livslängd.
period Den period som avskrivningen ska beräknas över.

Return value

Tillgångens avskrivning.

Remarks

Bokfört värde för en viss period är lika med inköpspriset minus den ackumulerade avskrivningen för tidigare perioder:

  • Bokfört värde för period 1 = pris
  • Bokfört värde för period 2 = bokfört värde för period 1 – avskrivning för period 1
  • Bokfört värde för period n = bokfört värde för period (n–1) – avskrivning för period (n–1)

Det finns tre varianter för beräkningen av avskrivning: If Period > Life:

  • Avskrivning = 0

Om (Bokfört värde för Period n) – ((Bokfört värde för Period n) × 2 ÷ Life) < Residualvärde:

  • Avskrivning = (bokfört värde för period n) – restvärde

I alla andra fall: Avskrivning = (bokfört värde för period n) × 2 ÷ Livslängd Funktionerna syd och sln beräknar också avskrivningen av en tillgång. Funktionerna syd och ddb möjliggör högre avskrivning för de tidigare åren, medan sln beräknar en linjär avskrivning.

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

dg

Beräknar bidragskvoten, som baseras på försäljningspriset och inköpspriset. Om värdet för försäljningsparametern är 0,0 kan beräkningen inte göras.

Syntax

real dg(real sale, real purchase)

Parameters

Parameter Description
sale Försäljningspriset.
purchase Inköpspriset.

Return value

Bidragskvoten.

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

Beräknar det framtida värdet för en investering.

Syntax

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

Parameters

Parameter Description
amount Det belopp som du betalade in under varje period.
interest Räntesatsen.
life Antalet investeringsperioder.

Return value

Investeringens framtida värde.

Remarks

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

idg

Beräknar försäljningspriset baserat på inköpspriset och bidragskvoten.

real idg(real purchase, real contribution_ratio)

Parameters

Parameter Description
purchase Inköpspriset.
contribution_ratio Bidragskvoten.

Return value

Försäljningspriset.

Remarks

Om bidragskvoten är lika med 1,0 kan beräkningen inte göras. Idg-funktionen är inversen till dg-funktionen.

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

intvMax

Hämtar antalet intervall för den angivna perioden när perioden delas in i delar enligt func-parametern .

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

Parameters

Parameter Description
input_date Slutet av perioden, som måste vara senare än parametern ref_date .
ref_date Periodens början.
func Ett systemuppräkningsvärde för IntvScale som anger divisionsenheten.

Remarks

Här är de möjliga värdena för func-parametern :

  • 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

Returnerar namnet på intervallet som är det angivna antalet intervall före det angivna datumet.

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

Parameters

Parameter Description
input_date Ett datum i det första intervallet.
col Antalet intervall före det datum som anges av parametern input_date .
func Ett uppräkningsvärde för intvScale .

Return value

Namnet på intervallet.

Remarks

Om till exempel func-parametern är uppräkningsvärdet IntvScale::WeekDay returnerar den här metoden namnet på veckodagen. Om func-parametern är uppräkningsvärdet IntvScale::Week returnerar den här metoden en sträng som innehåller veckans antal.

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

Beräknar antalet intervall mellan två datum när du delar upp tiden i de angivna intervallen.

Syntax

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

Parameters

Parameter Description
input_date Ett datum som anger periodens slut
ref_date Ett datum som anger periodens början.
func Ett uppräkningsvärde för intvScale .

Return value

Antalet intervall mellan de datum som parametrarna ref_date och input_date anger.

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

Returnerar det normaliserade datumet för perioden.

Syntax

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

Parameters

Parameter Description
input_date Slutet av perioden, som måste vara senare än det datum som du anger i parametern ref_date .
ref_date Periodens början.
func Ett uppräkningsvärde för intvScale som anger intervalldivisionsenheten.

Return value

Det normaliserade datumet för perioden.

Remarks

Det returnerade datumet är lika med datumet för den första dagen i intervallet där det datum som du anger i parametern ref_date finns.

Example

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

pmt

Beräknar det belopp som du måste betala varje period för att återbetala ett lån.

Syntax

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

Parameters

Parameter Description
principal Det belopp som du ursprungligen lånade.
interest Räntan tillämpade varje period på det belopp som du lånade.
life Antalet perioder som du återbetalar lånet för.

Return value

Det belopp som du måste betala varje period.

Remarks

Uttrycka parametrarna för livslängd och intresse i samma tidsenheter. Värdet för livsparametern måste vara större än 0,0.

Example

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

pt

Hämtar summan av ett tal plus en angiven procentandel av det talet.

Syntax

real pt(real amount, real percentage)

Parameters

Parameter Description
amount Det ursprungliga talet.
percentage Procenttillägget.

Return value

Talet som är lika med ((belopp ×percentage) + belopp).

Remarks

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

pv

Beräknar nuvärdet för en livränta, där du får ett belopp över flera perioder och räntan dras av för varje period.

Syntax

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

Parameters

Parameter Description
amount Det belopp som du betalar under varje period.
interest Räntesatsen.
life Antalet gånger som värdet som anges av mängdparametern betalas.

Return value

Det aktuella värdet för en annuitet.

Remarks

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

rate

Beräknar den ränta som krävs för det aktuella investeringsvärdet för att uppnå det framtida värdet under det angivna antalet perioder.

Syntax

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

Parameters

Parameter Description
_future_value Investeringens framtida värde.
_current_value Investeringens aktuella värde.
_terms Antalet perioder som investeringen omfattar.

Return value

Den beräknade räntesatsen.

Remarks

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

sln

Hämtar det konstanta avskrivningsbeloppet för den angivna tillgången för varje avskrivningsperiod.

Syntax

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

Parameters

Parameter Description
price Tillgångens inköpspris.
scrap Tillgångens kassationsvärde.
life Antalet perioder i tillgångens förväntade livslängd.

Return value

Avskrivningsbeloppet.

Example

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

syd

Beräknar avskrivningen för en tillgång under en angiven period.

Syntax

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

Parameters

Parameter Description
_price Tillgångens inköpspris.
_scrap Tillgångens kassationsvärde.
_life Tillgångens förväntade livslängd (antalet perioder).
_period Den period som avskrivningen ska beräknas för.

Return value

Avskrivningsbeloppet under den angivna perioden.

Remarks

Till skillnad från sln-funktionen kan funktionen syd använda accelererad avskrivning för tillgången. Precis som med ddb-funktionen resulterar den här metoden i högre avskrivningar under de tidiga perioderna av en tillgångs livslängd.

Example

I följande exempel beräknas den periodiska avskrivningen för en tillgång som har ett inköpspris på 10 000, ett skrotvärde på 2 000 och en livslängd på 5. Som jämförelse beräknar sln(10000 2000,5) 1 600,00 för varje period.

// 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

Beräknar antalet perioder som en investering måste köras för.

Syntax

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

Parameters

Parameter Description
amount Beloppet för den periodiska investeringen.
interest Räntesatsen för varje period.
future_value Det framtida värde som förväntas för investeringen

Return value

Antalet perioder som investeringen måste köras för.

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;
}