A program csak bizonyos feltételek teljesülése esetén engedi meg új számla áru tétel rögzítését a bizonylatra.
Új számla áru tétel felvitelének letiltása:
1. PSzaAla.SzNyDb > 0 Kinyomtatott számla.
2. PSzaAla.FokAll = ’1’ Kontírozott számla.
3. PSzaAla.StoKod <> ’0’ A bizonylat stornó / stornózott
4. PSzaAla.UtaAll = ’1’ Utalványozott számla.
5. PSzaAla.JovAll = ’1’ Jóváhagyott számla.
6. PSzaAla.KaZaDat <> null Már kamat van rá elszámolva.
A számla áru tételek törlésének egyrészt ugyanazok a feltételei mint a módosításnak, másrészt a törlés elvégzésének további feltételei is vannak.
Meglévő számla áru tétel törlésének letiltása:
1. PSzaAru.RaMoId > ’0’ Az áru tétel raktári mozgáshoz kapcsolódik.
A program a már rögzített számla áru tételek adatmezőinek módosítását bizonyos feltételektől függően teljesen vagy részlegesen letilthatja.
A. Az adatok módosításának teljes letiltása
1. PSzaAla.FokAll = ’1’ A bizonylat már kontírozva van
2. PSzaAla.StoKod <> ’0’ A bizonylat stornó / stornózott
3. PSzaAla.KaZaDat <> null Már kamat van rá elszámolva.
4. PSzaAla.SzNyDb > 0 And Kinyomtatott vevőszámla számla áru adatai
PSzaAla.TipusK = ’2’ nem módosíthatóak.
5. PSzaAru.TaeAll = ’2’ Az áruból tárgyi eszköz lett aktiválva.
6. PSzaAru.RaMoId <> ’0’ Az áruhoz raktári mozgás tartozik.
B. Egyes számla áru adatmezők letiltása
B.1. PSzaAla.TipusK = ’1’ And PSzaAru.PenAll > ’0’
Raktári mozgáshoz kapcsolódó szállítói számla áru tételek adatmezői:
1. AruKod Áru kód
2. Mennyi Mennyiség
3. MeeKod Mennyiség egység
4. AfaKod Áfa besorolás kód
Költség áfa esetén az áfa kulcs változása miatt megváltozna az áru bekerülési értéke.
5. ArTip Ár típus
6. TetErt Tétel érték (áfa nélküli)
7. AfaErt Áfa érték
B.2. PSzaAla.TipusK = ’1’ And PSzaAla.UtaAll = ’1’ And KAzoAda.SzaSzlJovMod = ’I’
Szállítói utalványozott számlák esetén rendszerparaméterként megadhatjuk, hogy a program letiltsa azoknak az adatmezőknek a módosítását, amelyeknek hatása van az utalványozásra.
1. AruKod Áru kód
2. AfaKod Áfa besorolás kód
3. Mennyi Mennyiség
4. TetErt Tétel érték (áfa nélküli)
5. AfaErt Áfa érték
B.31. PSzaAla.TipusK = ’2’ And PSzaAru.PenAll > ’0’
Raktári mozgáshoz kapcsolódó vevői számla áru tételek adatmezői:
1. AruKod Áru kód
2. Mennyi Mennyiség
3. MeeKod Mennyiség egység
B.3. PSzaAla.TipusK = ’2’ And PSzaAru.DevTet = ’I’
1. EgysAr Egységár
Devizás vevői számla áru tétel esetén az egységár mező letiltásra kerül, mivel az a devizás egységár és az árfolyam szorzataként kerül előállításra.
A. Áru tétel áfa kód és áfa besorolás kód ütköztetés
A számla áru tétel áfa kódjának és az áfa besorolás kódhoz tartozó áfa kódnak összhangban kell lenni. Amennyiben egy áfa besoroláskódhoz csak egyetlen áfa kód tartozhat, akkor az áfa besorolás törzsben megadható az, hogy a program az áfa besoroláskód kiválasztásakor az adott számla áru tételnél melyik áfa kódot fogadja el. Amennyiben az áfa besoroláskódhoz nem egyetlen áfa kód tartozhat, akkor az áfa besorolás törzsbe az áfa kód mezőbe X-et írunk, és ebben az esetben a program a számla áru tétel áfa kódját, és az áru tételnél megadott áfa besorolás kód áfa kódjának az egyezőségét nem ellenőrzi.
If PSzaAla.TipusK = ’1’ And PSzaAru.KulAfa In (’E’,’F’) Then AfaKodEll := AfaKodEU
Else AfaKodEll := AfaKod
Az ellenőrzés alapjául szolgáló áfa kód szállító számla és fordított adózás esetén az adó (különleges áfa fül) áfa kód, egyébként pedig a normál (alap adatok fül) áfa kód.
If ((PSzaAla.TipusK = ’1’) And {Szállító}
((PSzaAru.SAkdKod = ’0’) Or
(FAkdTor(PSzaAru.SAkdKod).AfaKod = ’X’) Or
(FAkdTor(PSzaAru.SAkdKod).AfaKod = AfaKodEll)))
OR
((PSzaAla.TipusK <> ’1’) And {Vevő, Belső}
((PSzaAru.VAkdKod = ’0’) Or
(FAkdTor(PSzaAru.VAkdKod).AfaKod = ’X’) Or
(FAkdTor(PSzaAru.VAkdKod).AfaKod = AfaKodEll)))
Then OK
Else Begin
Message : Áfa kód – áfa besorolás kód ütközés!
Abort
End
B. Áfa besorolás kód meglétének ellenőrzése
A számla áru áfa kódjának függvényében nem mindig engedhető meg az áfa besorolás kód hiánya. Amennyiben az áfa törzsben az adott áfa kódot úgy definiáltuk, hogy annak a szállítói áfa bevallásban, vagy a vevői áfa bevallásban szerepelni kell, akkor ha számla áru tétel rögzítésekor egy ilyen árukódot választottunk ki, akkor a számla áru adatok rögzítésekor az áfa besorolás kód mezőben 0-tól eltérő kódot kell megadnunk.
If (((PSzaAla.TipusK = ’1’) And {Szállító}
(PSzaAru.SAkdKod = ’0’) And
(AAfaTor(AfaKodEll).SzalBev = ’I’))
OR
((PSzaAla.TipusK <> ’1’) And {Vevő, Belső}
(PSzaAru.VAkdKod = ’0’) And
(AAfaTor(AfaKodEll).VevoBev = ’I’))
Then Begin
Message : Az áfa besorolás kód nem lehet 0!
Abort
End;
C. Áfa besorolás kód – számla típus egyeztetés
Az áfa besorolás kód törzsben az is megadható, hogy az adott áfa besorolás kód milyen típusú (Szállító, Vevő, Belső) választható ki. Így például a program nem engedi meg, hogy szállítói pénzügyi bizonylaton olyan áfa besorolás kódot adjunk meg, amely vevő bizonylatok számára lett definiálva.
If ((PSzaAla.TipusK = ’1’) And (FAkdTor(PSzaAru.SAkdKod).SzaSzl = ’N’)) Or {Száll}
((PSzaAla.TipusK = ’2’) And (FAkdTor(PSzaAru.VAkdKod).VevSzl = ’N’)) Or {Vev}
((PSzaAla.TipusK = ’3’) And (FAkdTor(PSzaAru.VAkdKod).BelSzl = ’N’)) Then {Belső}
Then Begin
Message : Számla típus – áfa besorolás kód ütközés!
Abort
End;
D. A rögzítendő áru típusának ellenőrzése gépi számlán
If PSzaAla.FormaK = ’1’ And
AAktTor.AruTip(AAruTor.AktKod(PSzaAru.AruKod)) <> ’2’ Then Message
Gépi számlára további számla áru tételként csak szolgáltatás típusú árukódot lehet rögzíteni. Az áru típust az áru katalógus törzs tartalmazza. Az áru katalógus kód a számla áruhoz tartozó áru törzsében található.
E. A rögzítendő áru hitelkamat számítási módjának ellenőrzése
If AAktTor.HitKam.Aktual <> AAktTor.HitKam.First Then Message
Számla áruként egy adott számla csak megegyező hitelkamat számítási módú áru tételek rögzíthetőek. A hitelkamat számítási mód a számla árukódhoz tartozó árutörzs árukatalógusának árukatalógus törzséből határozható meg.
Ez a megszorítás azért van, mert egy számlának csak egyféle hitelkamat számítási módja lehet.
F. A szállítói számla áfa kulcsának ellenőrzése
If PSzaAla.TipusK = ’1’ And
Abs(AAfaTor.AfaKul(PSzaAru.AfaKod) – 100 * PSzaAru.AfaErt / PSzaAru.TetErt) > 1
Then Message
Szállítói számla esetén mind a számla alap, mind az áfa érték input adat. Az ezekből kiszámított áfa kulcs maximum +- 1%-al térhet el a számla áru tételhez tartozó áfa kulcstól.
G. Számla áru költségviselő és munkalap megadás ellenőrzése
If PSzaAla.TipusK = ’1’ And Szállítói számla
Substring(PSzaAru.SKtgHel,1,1) = ’7’ And Van megadott költségviselő
SA.KtgVisMlpKell = ’I’ And Költségviselőhöz munkalapot kell megadni
PSzaAru.MlpAzo='0' And Nincs megadott munkaszám
Then Begin Message, Abort End
Szállítói számlában rögzített költségviselőre (7*) könyvelendő költségfelmerülés esetén a kötelező munkalapot megadni.
H. Számla áru költséghely és munkalap költséghely egyezőség figyelése
If PSzaAla.TipusK = ’1’ And Szállítói számla
SA.SzaKtgHelEgy = ’I’ And Figyelni kell az egyezőséget
PSzaAru.MlpAzo<>'0' And Van megadott munkaszám
PSzaAru.SKtgHel <> ’X’ And Van megadott költséghely
PSzaAru.SKtgHel <> KMunLap(PSzaAru.MlpAzo).KtgHel
Then Begin Message, Abort End
Szállítói számlában rögzített költségfelmerülés esetén a számla áru (project vagy tárgyi eszköz által meghatározott) költséghelyének egyezni kell a kiválasztott munkalap költséghelyével.
Rendszerparaméterként megadható, hogy a vállalkozás a pénzügyi modulban használja-e a kontírozás funkciót. Amennyiben igen, akkor a számla áru adatok számviteli fülén a megfelelő főkönyvi számlának értéket kell adni.
If ((PSzaAla.TipusK = ’1’) And {Szállító}
(KAzoAda.PenKontir = ’I’) And
(PSzaAru.SArkSzl = ’X’) And
(PSzaAru.SKtgNem = ’X’) And
(PSzaAru.SEgySzl = ’X’))
OR
((PSzaAla.TipusK = ’2’) And {Vevő}
(KAzoAda.PenKontir = ’I’) And
(PSzaAru.VFokKod = ’X’))
OR
((PSzaAla.TipusK = ’3’) And {Belső}
(KAzoAda.PenKontir = ’I’) And
(PSzaAru.BFokKod = ’X’))
Then Begin
Message :Hiányzik a főkönyvi számla!
Abort
End
Rendszerparaméterként megadható, hogy a vállalkozás a könyvelés során használ-e költség nemet / költség helyet / költség jelleget / költség típust. Amennyiben valamelyik adatra szükség van, akkor anélkül nem hagyja a program elmenteni a szállító számla (PSzaAla.TipusK = ’1’) áru tételét.
Ellenőrizendő mező Rendszer paraméter
Az adatbázis megszorítások nem engedik meg, hogy egy kötelező kitöltésűnek definiált adatmezőt üresen elmentsünk. További megszorításként azt is megadhatjuk, hogy az adott mezőben csak 0-tól eltérő értéket (kódot) fogadjon el program. Rendszerparaméterek (KAzoAda) segítségével a számla áru tábla alábbi adatmezőinél írhatjuk azt elő, hogy a mező tartalma nem lehet 0:
A. Szállító számlák mezői Rendszer paraméter
Az alábbi mezők kitöltését a program szállító számláknál csak szolgáltatás típusú (AAktTor.TipusK = ’2’) áruk rögzítésekor ellenőrzi, mivel csak szolgáltatásból lesz költségfelmerülés. A termék típusú szállítói számla áru tételek készletre lesznek vételezve, így azokhoz költség információk megadása nem szükséges.
B. Vevő és belső számlák mezői Rendszer paraméter
Pénzügyi bizonylatok (szállító és vevő számlák) áru adatainak felvitele (Insert) során a program lehetőséget biztosít arra, hogy a számla utolsó rögzített áru tételének egyes adatmezőinek tartalmát átmásoljuk, az éppen rögzítés alatt lévő tétel aktuális adatmezőjébe. Ez két módon valósítható meg.
Az első módszer szerint például, ha a számlára a negyedik árutételt rögzítjük, és éppen a szervezeti egység kód mezőben vagyunk, akkor ha megnyomjuk az F12 funkció billentyűt, akkor a program a számla harmadik árutételének szervezeti egység kódját beajánlja a negyedik tétel szervezeti egység input mezőjébe. Azon mezők beajánlása során, amely mezők kitöltése további mezők tartalmára tesz ajánlást (pl: project kód), az előző árutételből átvett mező tartalma ugyanúgy kiváltja más mezők adatainak kitöltését, mintha az adatmező tartalmát kézzel írtuk volna be. Az első áru tétel rögzítésekor a program természetesen nem tud ajánlást tenni.
Az előző árutétel átvehető adatmezői:
Ez a funkció akkor hasznosítható, ha olyan több áru tételből álló számlát rögzítünk, amelynek egyes áru tétel mezőinek adattartalma ugyanaz.
Van egy másik lehetőségünk is a számla áru adatok beajánlására. Ha megnyomjuk az F11 billentyűt, akkor a program ez előző tétel minden olyan mezőjének értékét beajánlja a rögzítés alatt lévő tétel mezőibe, amire az F12 billentyű mezőnkénti lenyomásával lehetőségünk volt. Azaz amennyiben az előző tétel adatainak a többségét át kívánjuk venni, akkor nem egyenként vesszük át a mezők tartalmát az F12 billentyű többszöri lenyomásával, hanem egyszer megnyomjuk az F11 billentyűt, és minden mező kitöltésre kerül.