Értékcsökkenés számítás

Navigation:  Tartalom > Számviteli modul > Tárgyi eszköz nyilvántartás > Tárgyi eszközök adatainak karbantartása >

Értékcsökkenés számítás

Previous pageReturn to chapter overviewNext page

 

A program a tárgyi eszköz tárgy időszaki értékcsökkenését az alábbi esetekben számítja ki:

A tárgyi eszköz adatainak módosítása
Mozgás könyvelés tárgyi eszközön
Tárgyi eszközök időszaki zárása

A tárgy időszakra kiszámított ÉCS csak mint tájékoztató adat szerepel az adatbázisban. A kiszámított ÉCS tényleges elszámolására az időszaki zárás során kerül sor. A kiszámított ÉCS-t figyelembe véve jelennek meg a tárgyi eszközök adatai (halmozott ÉCS, nettó érték, stb.) az adatbázisban és a listákban.

 

Program paraméterek:

KAzoAda

TaeIdoTip        Tárgyi eszköz időszak típus:        12 – hónap

                                         4 – negyedév

TaeAktEv        Tárgyi eszköz aktuális év

TaeAktId        Tárgyi eszköz időszak (hónap vagy negyedév)

 

Változók:

TaiKezDat:        Tárgy időszak kezdő dátum                        kiszámítandó

TaiBefDat:        Tárgy időszak befejező dátum                        kiszámítandó

EliKezDat:        Előző időszak kezdő dátum                        kiszámítandó

EliBefDat:        Előző időszak befejező dátum                        kiszámítandó

TaiMozDb        Tárgy időszaki lekönyvelt mozgások száma        (QueryC)

EliMozDb        Előző időszaki lekönyvelt mozgások száma        (QueryB)

TaiMozMax        Tárgy időszaki napok maximális száma                Const=100

TaiNapSza        Tárgy időszaki napok száma                        kiszámítandó

EcsMaxPlu        Elszámolható ÉCS növekmény a mozgásokból

EliMozErt        Előző időszak mozgásainak értéke                (LeiMod=2)

TaiMozErt        Tárgy időszak mozgásainak értéke                (LeiMod=2)

BttErtU                Mozgás bruttó érték        – számított

EcsErtU        Mozgás ÉCS érték        – számított

HelErtU                Mozgás ÉH érték        – számított

AktBttU                Aktuális bruttó érték        – számított / új

AktHalU        Aktuális halmozott ÉCS        – számított / új

AktHelU        Aktuális halmozott ÉH        – számított / új

AktEcsU        Aktuális ÉCS érték        – számított / új

AktNetU        Aktuális nettó érték        – számított / új

HibKodU        Hibakód

EcsSzTp        Értékcsökkenés számítás típusa

1 – Számviteli törvény szerint

2 – Adó törvény szerint

 

Időszaki értékváltozás tömb – Rögzített mozgások:

IdErVaRoT:        array[0..TaiMozMax,1..2] of float

1 – Számviteli törvény szerinti értékek

2 – Adó törvény szerinti értékek

Időszaki értékváltozás tömb – Input mozgás

IdErVaInT:        array[0..TaiMozMax,1..2] of float

1 – Számviteli törvény szerinti értékek

2 – Adó törvény szerinti értékek

 

 

1.        Előző év ugyanezen időszaki mozgásainak beolvasása:

Minden mozgás Insert előtt.

 

QueryB

SELCET * FROM FTaeMoz

WHERE MozDat>=EliKezDat AND MozDat<=EliBefDat

EliMozDb:=QueryB.Count

 

2.        Előző év ugyanezen időszaki mozgások feldolgozása

Minden mozgás Insert előtt.

 

EliMozFeld(EcsSzTp)

1 – Számviteli törvény szerint

2 – Adó törvény szerint

EliMozErt:=0

For j1:=1 To EliMozDb Do

Begin

EliMozErt:=EliMozErt+(BttErt-EcsErt)

End

 

3.        Tárgy időszaki mozgások beolvasása:

Minden mozgás Insert előtt.

 

QueryC

SELCET * FROM FTaeMoz

WHERE MozDat>=TaiKezDat AND MozDat<=TaiBefDat

TaiMozDb:=QueryC.Count

 

4.        Tárgy időszaki mozgások feldolgozása

Minden mozgás Insert előtt.

 

TaiMozFeld(EcsSzTp)

1 – Számviteli törvény szerint

2 – Adó törvény szerint

MozNapSor        A mozgás napjának sorszáma az aktuális időszakon belül

IdErVaRoT:=0

EcsMaxPlu:=0

TaiMozErt:=0;

For j1:=1 To TaiMozDb Do

Begin

MozTip:=f(TeMoKd) >>> FTeMoDf.TeMoJo >>> TEJ

TaiMozErt:=TaiMozErt+(BttErt-EcsErt)

Case MozTip Of

1,2:EcsMaxPlu:=EcsMaxPlu+(BttErt-EcsErt)

MozNapSor:=NapDiff(TaiKezDat,MozDat)

If (MozNapSor>0) And (MozNapSor<=TaiMozMax) Then

Begin

IdErVaRoT[MozNapSor,EcsSzTp]:= IdErVaRoT[MozNapSor,EcsSzTp]+BttErt

End

End

 

5.        Mozgás input adatok feldolgozása / ÉCS számítás

 

Elvégzendő, ha {MozDat,TeMoKd,BttErt,EcsErt,HelErt} bármelyik értéke megváltozott, de már mind ki van töltve, továbbá FTaeFej post előtt.

 

BttErtU:=0;EcsErtU:=0;HelErtU:=0;

AktBttU:=0;AktHalU:=0;AktHelU:=0;AktNetU:=0;

HibKodU:=0;

VarLeiU:='';

 

Az aktuális értékcsökkenést kiszámító rutin:

 

AktEcsU:=LeiErtSzam(EcsSzTp,

FTaeFej.LeiMod, FTaeFej.Status, FTaeFej.SzuKez, FTaeFej.SzuVeg,FTaeFej.KivDat,

 FTaeFej.SzvKul, FTaeFej.AktBtt, FTaeFej.AktHal, FTaeFej.AktHel, FTaeFej.AktEcs,

 FTaeFej.IdoBtt, FTaeFej.IdoHal,FTaeFaj.MarErt,

 FTaeFej.EgLeIr,

 FTaeFej.LeiNor, FTaeFej.LeiAla,

 FTaeFej.DegKul,

 FTaeMoz.MozDat, FTaeMoz.TeMoKd,

 FTaeMoz.BttErt, FTaeMoz.EcsErt,FTaeMoz.HelErt,

 BttErtU,EcsErtU,HelErtU,

 AktBttU,AktHalU,AktHelU,AktNetU,

 HibKodU,

VarLeiU)

 

FUNCTION LeiErtSzam(EcsSzTp,

LeiModX:Char(1); StatusX:Char(1); SzuKezX,SzuVegX,KivDatX:Datetime;

LeiKulX,AktBttX,AktHalX,AktHelX,AktEcsX,

IdoBttX,IdoHalX,MarErtX:Real;

EgLeErX:Float;

LeiNorX,LeiAlaX,

DegKulX:Float;

MozDatX:Datetime;TeMoKdX:Char(4);

BtErX,EcErX,EhErX:Float;

Var BtErY:Float; Var EcErY:Float; Var EhErY:Float;

Var AktBttY:Float; Var AktHalY:Float; Var AktHelY; Var AktNetY;

Var HibKodY:Integer,

Var VarLeiY:Char(7)):Float

 

Bemenő paraméterek:

 EcsSzTp        ÉCS számítás típusa

 LeiModX        Leírási mód

 StatusX                Tárgyi eszköz státusz kód

 SzuKezX        Leírás szüneteltetés kezdete

 SzuVegX        Leírás szüneteltetés vége

 LeiKulX                Leírási kulcs %

 AktBttX                Aktuális bruttó érték – a mozgás könyvelése előtt

 AktHalX                Aktuális halmozott ÉCS érték – a mozgás könyvelése előtt

 AktHelX                Aktuális halmozott ÉH érték – a mozgás könyvelése előtt

 AktEcsX        Aktuális időszaki ÉCS érték – a mozgás könyvelése előtt

 IdoBttX                Időszaki nyitó bruttó érték

 IdoHalX                Időszaki nyitó halmozott ÉCS érték

 MarErtX                Maradványérték

 EgLeErX        Egyedi leírás értéke

 LeiNorX                Leírási norma

 LeiAlaX                Leírási vetítési alap

 DegKulX        Degresszív leírási kulcs

 BtErX                Mozgás bruttó érték        - Bemenő

 EcErX                Mozgás ÉCS érték        - Bemenő

 EhErX                Mozgás ÉH érték        - Bemenő

 

Kimenő paraméter:

BtErY                Mozgás bruttó érték        - Kimenő                                

 EcErY                Mozgás ÉCS érték        - Kimenő                                

 EhErY                Mozgás ÉH érték        - Kimenő                                

 AktBttY                Aktuális bruttó érték        – számított / új                                

AktHalY                Aktuális halmozott ÉCS        – számított / új                                

AktHelY                Aktuális halmozott ÉH        – számított / új                                

AktEcsY        Aktuális ÉCS érték        – számított / új                                

AktNetY        Aktuális nettó érték        – számított / új                                

HibKodY        Hibakód                                                        

VarLeiY                Várható leírás időpontja

 LeiErtSzam        Az időszaki leírás számított értéke        (AktEcsY)                

 

Lokális változók:

MozTip                Mozgás típus                                                        Int

MozElj                Mozgás előjel        (-1,0,+1)                                        Int

EcsMax                Az elszámolható ÉCS maximuma                                Float

MozNapSor        A mozgás napjának sorszáma az aktuális időszakon belül        Int

AktBttErt        Aktuális bruttó érték az ÉCS számítás során                        Float

NapAktErt        Napi aktuális bruttó érték az ÉCS számítás során                Float

NapAktLei        Napi számított ÉCS                                                Float

EloNapSor        Előző nap sorszáma az ÉCS számítás során                        Int

NapAkt                Aktuális nap sorszáma – ciklusváltozó                                Int

ErtValTet        Értékváltozások száma                                                Int

SzuKezSor        Szüneteltetés kezdő napjának sorszáma                        Int

SzuBefSor        Szüneteltetés befejező napjának sorszáma                        Int

 

{FUNCTION LeiErtSzam}

Begin        {If (StatusX<='2”) }

 

 HibKodY:=0

 MozTip:=f(TeMoKdX)        >>> FTeMoDf.TeMoJo >>> TEJ

MozElj                Mozgás előjel        (-1,0,+1)        f(TeMoKd) >>> FteMoDf.TeMoIr

                                                 TeMoIr=1 >>> MozElj:=1

                                         TeMoIr=2 >>> MozElj:=-1

                                         Else           >>> MozElj:=0

EcsMax:=IdoBttX-IdoHalX-MarErtX+EcsMaxPlu                !

If MarErtX<0 Then MarErtX:=0 Else                        !

BtErY:=MozElj*Abs(BtErX)        

EcErY:=MozElj*Abs(EcErX)

EhErY:=MozElj*Abs(EhErX)

AktBttY:=AktBttX+BtErY                If AktBttY<-1E-4 Then HibKodY:=1 Else

AktHalY:=AktHalX+EcErY        If AktHalY<-1E-4 Then HibKodY:=2 Else

AktHelY:=AktHelX+EhErY        If AktHelY<-1E-4 Then HibKodY:=3 Else

 

If (MozTip=1) Or (MozTip=2) Then EcsMax:=EcsMax+(BtErY-EcErY)

 

{Case LeiModX='0'}        Nincs leírás

AktEcsY:=0

 

{Case LeiModX='1'}        Azonnali leírás

AktEcsY:=AktBttY-AktHalY+BtErY-EcErY

 

{Case LeiModX='2'}        Két naptári éves leírás

AktEcsY:=Round(EliMozErt/2+(TaiMozErt+BtErY-EcErY)/2,0)

 

 

{Case LeiModX='3'}        Lineáris napi leírás

 

Input mozgástömb előállítása

IdErVaInT:=0

MozNapSor:=NapDiff(TaiKezDat,MozDatX)+1

If (MozNapSor>0) And (MozNapSor<=TaiMozMax) Then

Begin

IdErVaInT[MozNapSor,EcsSzTp]:= IdErVaInT[MozNapSor,EcsSzTp]+BtErY

End

 

Időszaki értékadatok kiszámítása

AktBttErt:=IdoBttX

For NapAkt:=1 To TaiNapSza Do

Begin

NapAktErt:=AktBttErt+ IdErVaRoT[NapAkt,EcsSzTp]+ IdErVaInT[NapAkt,EcsSzTp]

IdErVaInT[NapAkt,EcsSzTp]:=NapAktErt

AktBttErt:=NapAktErt

End

 

ÉCS szüneteltetési napok kinullázása

SzuKezSor:=NapDiff(TaiKezDat,SzuKezX)+1

If SzuKezSor<0 Then SzuKezSor:=0 Else

SzuBefSor:=NapDiff(TaiKezDat,SzuBefX)+1

If SzuBefSor<0 Then SzuBefSor:=0 Else

If SzuBefSor>TaiNapSza Then SzuBefSor:=TaiNapSza Else

If SzuBefSor>0 Then

Begin

         For NapAkt:=SzuKezSor To SzuBefSor Do

         Begin

IdErVaInT[NapAkt,EcsSzTp]:=0

         End

End Else

 

Időszaki értékcsökkenés kiszámítása

AktBttErt:=IdoBttX

EloNapSor:=0

AktEcsY:=0

ErtValTet:=0

NapAktLei:=0

For NapAkt:=1 To TaiNapSza Do

Begin

NapAktErt:=IdErVaInT[NapAkt,EcsSzTp]

If (Abs(AktBttErt-NapAktErt])>1E-4) Or (NapAkt=TaiNapSza) Then

Begin

If (NapAkt<>TaiNapSza) Then ErtValTet:=ErtValTet+1 Else

NapAktLei:=Round((AktBttErt-MarErtX)*LeiKulX*

(NapAkt-EloNapSor)/TaeIdoTip/TaiNapSza/100,0)

AktEcsY:=AktEcsY+NapAktLei

EloNapSo:=NapAkt

AktBttErt:=NapAktErt

End Else

End

 

If ErtValTet=0 Then

Begin

AktEcsY:=Round((AktBttY-MarErtX)*LeiKulX/TaeIdoTip/100,0)

End Else

 

{Case LeiModX='4'}        Egyedi leírás

AktEcsY:=EgLeErX

 

{Case LeiModX='5'}        Normatív leírás

AktEcsY:=Round(LeiNorX*LeiAlaX,0)

 

{Case LeiModX='6'}        Degresszív leírás

If IdoBttX>0 Then

Begin

AktEcsY:=Round((IdoBttX-IdoHalX)*DegKulX,0)

End

Else

Begin

AktEcsY:=Round((AktBttX-AktHalX)*DegKulX,0)

End

 

{Case LeiModX End}

 

If AktEcsY>EcsMax Then AktEcsY:=EcsMax Else

If AktEcsY<1E-4 Then AktEcsY:=0 Else

AktNetY:=AktBttY-AktHalY-AktEcsY        If AktNetY<-1E-4 Then HibKodY:=3 Else

 

{VarLeiY}

 

LeiErtSzam:=AktEcsY

End