Show TOC

ObjektumdokumentációAdóképlet – definíciók ablak Művelet mező: Brazília és India Jelen dokumentum megkeresése a navigációs struktúrában

 

Az Adóképlet – definíciók ablak ezen mezőjének segítségével érvényes műveleteket választhat ki az adóképlet számára.

Az ablak megnyitásához válassza a következő elérési útvonalat:   Adminisztráció   Definíciók   Pénzügy   Adó engine konfigurálás  .

Aritmetikai műveletek

Művelet

Leírás

Példa

Eredmény

+

Összeadás

X=2

X=X+1

3

Kivonás

X=2

X=5-X

3

*

Szorzás

X=4

X=X*5

20

/

Osztás

X=5

X=15/X;

X=5

X=X/2

3;

2.5

%

Modulus (osztási maradék)

5%2;

10%8;

10%2;

1;

2;

0

(,)

Prioritás

5*(2+3)

25

Kerekítés (szám, tizedesek számként)

Előre definiált kerekítési funkció.

A kerekítési szabályok ezeket a beállításokat követik:

  • a Bizonylat beállításai ablak Kerekítési módszer mezője

  • a Pénznemek definiálása ablak Kerekítés mezője

  • az Általános beállítások ablak Tizedesjegy mezőjének Megjelenítés lapja

Kerekítés (2,134,2);

Kerekítés (2.-1)

2.13;

0

Kerekítés (szám, típus)

Előre definiált kerekítési funkció.

Az alábbi típusok közül csak egyet választhat:

  • Százalék

  • Árak

  • Összegek

  • Mennyiségek

A kerekítési szabályok az Általános beállítások ablak Tizedesjegy mezőjének Megjelenítés lapján történt beállításokat követik.

Kerekítés (2,134, összegek)

Ha a Tizedesjegy Összegek mező értéke 2.

2.13

Feltételműveletek

Műveletek

Leírás

Példa

Eredmény

<

Kisebb, mint

5<8

Igaz

<=

Kisebb vagy egyenlő

5<=8

Igaz

==

Egyenlő

5==8

Hamis

!=

Nem egyenlő

5!=8

Igaz

>=

Nagyobb vagy egyenlő

5>=8

Hamis

>

Nagyobb, mint

5>8

Hamis

If…else

Feltételes utasítás

if (X<6) {X=X+2} else

{X=X+1}

X=3

5

Példa Példa

ICMS

Iparosítás vagy újraeladás vagy fogyasztás vagy vagyon

ICMS bruttó összeg = Cikk nettó érték / (1-((ICMS kulcs/100)*(bázis/100)))

ICMS adóösszeg = ICMS bruttó összeg – nettó érték

Bázisösszeg = Cikk nettó érték / (1-((ICMS kulcs/100)*(bázis/100))*(1+(IPI kulcs/100)*(IPI bázis/100)))

ICMS összeg = Bázisösszeg * ((100-ICMS kulcs)/100)*(bázis/100))

A példa vége
Nyelvtani szabályok

A nyelv megkülönbözteti a kis- és nagybetűs írást.

  1. Az egyszavas kifejezéseket a rendszer nem támogatja. Csak utasítások érvényesek.

    Az érvényes utasítások az alábbiakat foglalják magukban:

    • Hozzárendelés

    • Ha

    • Míg

    • Összetett

  2. Értékadó utasítások szabályai:

    1. A hivatkozott lokális változót inicializálni kell.

      Az alábbi utasítások érvénytelenek:

      a = a + 1

      /*a lokális változó 'a' nem az előtte lévő értékhez van hozzárendelve */

      b = a

      /*a lokális változó 'a' nem az előtte lévő értékhez van hozzárendelve */

    2. A hivatkozott külső lokális változó a blokkban nem rendelhető hozzá más típusú értékhez.

      Az alábbi utasítások helytelenek:

      a = "124"

      /*ez azért nem helyes, mert az 'a' lokális változó típusa sztring, amelyet a blokk előtti utolsó utasításban lehet meghatározni*/

  3. If / while utasítások szabályai:

    1. A "(" and ")" közé tett kifejezéstípusnak boole-i típusúnak kell lennie:

      1. Igaz

      2. Hamis

      3. A relációs kifejezés eredménye.

    2. A "{" and "}" plus "{" and "}" közé tett utasítások egy blokkot képeznek, így a 2.b) szabály alkalmazandó.

  4. Funkciószabályok:

    1. Ez a verzió csak a "Kerekítés" funkciót támogatja, amelynek két prototípusa van:

      • Kerekítés (szám, tizedesek számként)

        /* Az első paraméter "szám" egész és valós számokat foglal magában és a kerekített számot képezi le; a második paraméter "egész" az egész típusokat foglalja magában és csak a tizedesvessző utáni számjegyeket képezi le */

      • Kerekítés (szám, típus)

        /* Az első paraméter ugyanaz, mint az első prototípus; a második paraméter "típus" értéke a következő értékek egyike: százalékok, árak, összegek vagy mennyiségek */

  5. Kifejezési szabályok:

    1. Logikai kifejezés:

      Operátorok: && > ||

      Operandusok: az érték boole-i kell, hogy legyen

    2. Relációs kifejezés:

      Operátorok: >, >=, ==, !=, <, <=

      Operandusok:

      • Ha két operandus között egy szöveg érték található, a nem szöveg típusú érték átváltozik a megfelelő szövegértékre az összehasonlítás megtörténte előtt

      • Ha nincs szöveg érték két operandus között, az egész szám, a valós szám és boole-i értékei összehasonlíthatók

      Példa Példa

      • A ("truf" > true) értéke igaz. Ebben az esetben a második operandus "igaz" értékre konvertálódott.

      • A (2 < "12") értéke hamis. Ebben az esetben az első operandus "2" értékre konvertálódott.

      • A (2< igaz) értéke hamis. Ebben az esetben a második operandus "1" értékre konvertálódott.

      • A (2>hamis) értéke igaz. Ebben az esetben a második operandus "0" értékre konvertálódott.

      A példa vége
    3. Aritmetikai kifejezés:

      Operátorok: (*, /, %) > (+, -)

      Operandusok:

      • A "%" operandusa egész típusú kell, hogy legyen\

      • Az operátorok operandusai, kivéve a "%" és "+" nem szöveg típusúnak kell lenniük, például egész vagy valós számok, boole-i

      • A "+" operandusa bármilyen típusú lehet. Ha az operandusnak szöveg értéke van, az eredmény szöveg lesz; egyébként az eredmény numerikus lesz.

      • Ha mindkét operandus egész szám, "/" eredménye szintén egész szám lesz. Például 2 / 4 = 0 (osztás pontosan)

    4. Unáris kifejezés:

      Operátorok: !, -

      Operandusok:

      • A "!" operandusnak boole-i értéknek kell lennie.

      • A "-" operandusnak nem szöveg típusú értéknek kell lennie.

    5. Zárójeles kifejezés: a legmagasabb prioritású kifejezés

      Operátorok: (, )

      Prioritásaik: 1) < 2) < 3) < 4) < 5)

  6. Egyéb szabályok:

    1. A szövegek nem rendelhetők nem szöveg típusú kimeneti paraméterekhez

    2. Bemeneti paraméterhez nem lehet értéket rendelni

    3. Szám-túlcsordulás - ha túllépi a maximális 9223372036854 értéket

    4. Az összes kimeneti változónak hozzárendelt értéknek kell lennie.

Foglalt szavak (kis- és nagybetű érzékeny)

if

Percents

ContinueNotice

Round

else

Prices

ContinueNextPageNotice

while

Amounts

B1Notice

True

Quantities

false

B1 FORDÍTÓ

KARAKTEREK

betűk = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" .

számjegyek = "0123456789" .

cr = CHR(13).

tab = CHR(9) .

If = CHR(10) .

anyButQuote = ANY – “ ' ”

anyButApostrophe = ANY – “ ' ”

COMMENTS FROM "/*" TO "*/"

IGNORÁLÁS

cr + lf + tab

TOKENEK

ident = betű {letter | digit | '_'} .

szám = számjegy {digit}.

real = számjegy {digit} "." számjegy {digit}.

string = '"' {anyButQuote} '"' | "'" {anyButApostrophe} "'".

PRODUCTIONS

B1 = Body.

Body = StatSeq .

StatSeq = Stat [";"] {Stat [";"]}.

CompoundStat = "{" StatSeq "}".

Stat = AssignStat | IfStat | WhileStat | CompoundStat.

AssignStat = Ident "=" Exp.

IfStat = "if" "(" Exp ")" CompoundStat [ "else" CompoundStat ].

WhileStat = "while" "(" Exp ")" CompoundStat.

Exp = ConExp.

ConExp = OrExp.

OrExp = AndExp { "||" AndExp }.

AndExp = RelExp { "&&" RelExp }.

RelExp = AddExp [ RelOp AddExp].

RelOp = ( "<" | "<=" | ">" | ">=" | "==" | "!=" ).

AddExp = MulExp { AddOp MulExp}.

AddOp = ( "+" | "-" ).

MulExp = Factor { MulOp Factor }.

MulOp = ( "*" | "/" | "%" ).

Factor = ("true" | "false" | integer | string | real |"(" Exp ")" | IdentOrFunction | Enum | UnaryOp Factor).

IdentOrFunction = Ident (ParamList | ).

Ident = ident.

ParamList = "(" [Exp { "," Exp}] ")".

Enum = RoundTypeEnum | SystemStringEnum.

RoundTypeEnum = ("Percents" | "Prices" | "Amounts" | "Quantities").

SystemStringEnum = ("ContinueNotice" | "ContinueNextPageNotice" | "B1Notice").

UnaryOp = ("-" | "!").

END B1.