A stornó funkció segítségével, a [Stornózás
] gomb megnyomása után egy kiadás (értékesítés, felhasználás, egyéb készletnövekedés) bizonylatfejhez tartozó mozgástételek stornózása végezhető el.
| Jogosultságkód: | A stornózás ugyanazzal a jogosultsággal végezhető el, mint a stornózandó mozgás rögzítése. |
A stornózás elvégzésének lépései:
A, Bizonylat fej kiválasztása
Ki kell választanunk azt a bizonylatfejet, amelyen a stornózandó mozgás található.
B, A stornózandó mozgástétel kiválasztása
A bizonylatfejen rá kell állnunk arra a mozgásra, amelyet stornózni szeretnénk és meg kell nyomnunk a [Stornózás] gombot.
Csak olyan mozgás tételek stornózhatók, ahol a tétel adataira igazak az alábbi feltételek: AND
1.Kiadás tárgyi eszköz aktiválásra mozgás stornózás előtt külön ellenőrizendő:
KRakMoz.MozKod -> KonTip='365'
| • | Select BttoErt From FTaeFej Where KRakMoz.RaMoId=FTaeFej.RaMoId |
Feltétel Sum(AktBtt)<1E-4
A kiadási mozgásból keletkezett tárgyi eszköznek nem lehet az aktuális bruttó értéke nullánál nagyobb. Azaz, ha a mozgásból tárgyi eszköz keletkezett, és annak az aktiválása le van könyvelve, akkor az aktiválást stornózni kell.
AND
| • | Select StoKod From FTaeMoz Where KRakMoz.RaMoId=FTaeMoz.RaMoId |
Feltétel All(StoKod)='1' {Stornózott}
A raktári mozgásból keletkezett tárgyi eszköz mozgásoknak (ráaktiválás) stornózottnak kell lenni.
2. Egyéb stornózási feltételek:
| • | KRakMoz.PSzaBiz=0 Csak Jogcim='4' – Értékesítés esetén! |
A raktári mozgáshoz nem tartozhat számla áru tétel. Ha a mozgás számla áru tételhez van kapcsolva, akkor előbb le kell bontani az összerendelést.
| • | KRakMoz.FokAll=0 Főkönyvi kontírozatlan állapot |
A mozgás még nincs kontírozva. Kontírozott mozgás kontírozását előbb vissza kell stornózni.
| • | KRakMoz.StornB=0 Még nincs stornírozva |
Stornózott tétel már nem stornózható még egyszer, a stornó mozgást pedig nem lehet visszastornózni.
Kulcs paraméterek:
| • | Mozgás azonosító RaMoIdX:= KRakMoz.RaMoID |
| • | Eredeti mozgáskód MozKodX:= KRakMoz.MozKod |
MozIraX:=Copy(MozKodX,4,1)
| • | Stornó mozgáskód MozKodY: előállítandó a MozKodX alapján |
If MozIraX=1 Then MozIraY:=2 Else MozIraY:=1
A MozKodY többi eleme megegyezik a MoKodX-el.
Ellenőrizni kell, hogy az új kód létezik-e!
| • | Mozgás előjel If MozIraY=1 Then MozEljY:=1 Else MozEljY:=-1 |
| • | Árukód AruKodX:= KRakMoz.AruKod |
| • | Tárolóhely TarHelX:=KRakMoz.TarHel |
| • | Mennyiség MennyiX:=KRakMoz.Kiadas |
| • | Tétel sorszám TetSorX:= KRakMoz.Tetsor |
C, A stornózandó mozgáshoz tartozó tételes mozgások felolvasása
Query_A
SELECT M.TeMoID, M.TeKeID M_TeKeID, M.RaMoID, M.Bevete, M.Kiadas,
K.TeKeID K_TeKeID, K.AruKod, K.ParKod, K.BizAzo, K.BevDat, K.TeKeSo,
K.BevEar, K.NyiKes, K.Bevete K_Bevete, K.Kiadas, K.AktEar, K_Kiadas
FROM KTetMoz M, KTetKes K
WHERE M.TeKeID=K.TeKeID
AND M.RaMoID=:RaMoIdX
ORDER BY M.RaMoID
(A Query_A tételeinek száma kiadási mozgások stornózásakor egy vagy több !)
D, Query_A kiértékelése
(Felhasználás stornózásakor nem szükséges)
E, A felolvasott tételek megjelenítése adatrácsban (Query_A)
A stornózás folyamata a [Stornó végrehajtása] gomb megnyomásával indul.

F, Stornózás elvégezhetőségének vizsgálata
Felhasználás stornózásakor, amely tétel a B pontban ismertetett feltételeknek megfelel, az stornózható.
G, A stornózás elvégzése
StartTransaction
G.1. Raktári készlet
Készlet sor beolvasása (AruKodX,TarHelX)
Készlet sor módosítása
KRakKes.Kiadas:= KRakKes.Kiadas + MozElj * MennyiX
Update KRakKes(AruKodX,TarHelX)
G.2. Raktári mozgás tétel
G.2.a. Stornó tétel
Adatai megegyeznek a stornózandó tételével, kivéve:
KRakMoz.RaMoID generált RaMoIDY
KRakMoz.Tetsor generált
TetSorY:= KRakMoz.Tetsor
KRakMoz.Kiadas:= MozEljY * MennyiX
KRakMoz.Erteke:= MozEljY * ErtekeX
KRakMoz.Besert:= MozEljY * BesertX
KRakMoz.Aktert:= MozEljY * AktertX
KRakMoz.Stokod:=2
KRakMoz.StornA:=TetSorX
KRakMoz.StornB:=0
Insert KRakMoz
G.2.b. Stornózandó/stornózott tétel (RaMoIDX)
KRakMoz.Stokod:=1
KRakMoz.StornA:=0
KRakMoz.StornB:=TetSorY
Update KRakMoz
G.3. Árutörzs módosítása
Az árutörzsbe készletkönyveléskor már nem történik visszaírás! A korábban visszaírt adatokat a program az adatok megjelenítésekor számolja ki.
G.4. Rendelés módosítás
Ha a mozgáshoz rendelési tétel kapcsolódik, akkor át kell számolni a rendelési tétel kiadott mennyiségét.
If KRakMoz.RenSza>0 Then
Begin
RenSza -> KRenTet.TetAzo beolvasás
KRenTet.FeMeGy:= KRenTet.FeMeGy + MennyiX
UpDate
End Else
G.5. Tételes mozgás és készlet
While Not EOF(Query_A) Do
Begin
G.5.a Tételes készlet
Tételes készlet sor beolvasása M.TeKeID
Tételes készlet sor módosítása
KTetKes.Kiadas:= KTetKes.Kiadas + MozElj * M.Kiadas
If Abs(K.Bevete - K.Kiadas) > 1E-4 Then K.Elokod:='I' Else K.Elokod:='N
A többi mező nem változik
Update KTetKes(M.TeKeID)
G.5.b Tételes mozgás
Tételes mozgás sor beolvasása M.TeMoID
Új tételes mozgás sor előállítása
KTetMoz.Kiadas:=MozElj * M.Kiadas
KTetMoz.RaMoID:=RaMoIDY (KRakMoz.RaMoID)
'
A többi mező megegyezik az eredeti sor mezőjével
Insert KTetMoz
Next
End
CommitTransaction