A kamatra adott szállítói előleg számlák kamatainak kiszámítását végző funkció.
Jogosultságkód: 24220400 Help context: 24220400
Forrás: EloKamSzam

Az input adatokat az előtétszűrés előtt meg kell adni, mert a kamatszámítás záró dátuma szerepel a fix szűrési feltételek között.
X1. p_ZarDat datetime Kamatszámítás záró dátuma
X2. p_FizHat datetime Fizetési határidő
X3. p_SzmDat datetime Számla kelte
X4. p_BtoKod varchar (3) Bizonylattömb fk: KBToTor.BtoKod
X5. p_ErtHat float Értékhatár
A kamatszámítás funkcióban a kamatszámlák elkészítése előtt megadhatunk egy értékhatárt. Amennyiben az adott partner számára számlázandó kamat értéke (áfa nélkül) nem éri el a megadott összeget, akkor a program a partner számára nem készít vevői kamat számlát.
Azon előleg számlák leválogatását elvégző funkció, amelyekre kamatot kívánunk számolni.
A. Fix szűrési feltételek
PSzaAla – Számla alap adatok
(TipusK=’1’) Szállító AND
((Jelleg=’2’) OR (Jelleg=’3’)) AND
Rész-számla Előleg számla
(Status<=’1’) Elfogadott státusz AND
(Stokod=’0’) Nem stornó, vagy stornózott számla AND
((HitKam=’I’) OR (HitKam=’E’) OR (HitKam=’V’))
Fix kamat Egyedi kamat Változó kamat
Hitelkamat számítás szükséges AND
(KamElo=’I’) Kamatszámítási szempontból élő AND
isnull(szl.KaZaDat,szl.teldat) < @p_ZarDat
A számla kamatszámítási záró dátuma korábbi az aktuális záró dátumnál
B. Rugalmas szűrési feltételek
1. @p_ParKodK varchar (6), -- Számla partner
@p_ParKodZ varchar (6), -- AParTor
2. @p_AlaKodK varchar (1), -- Partner áfa alany
@p_AlaKodZ varchar (1), -- AAlaTor
3. @p_DevKodK varchar (3), -- Devizanem
@p_DevKodZ varchar (3), -- ADevTor
4. @p_SzAlIdK varchar (20), -- Számla azonosító
@p_SzalIdZ varchar (20),
5. @p_RelaciK varchar (1), -- Reláció
@p_RelaciZ varchar (1), -- PRE
6. @p_JellegK varchar (1), -- Jelleg
@p_JellegZ varchar (1), -- PJL
7. @p_FimKodK varchar (2), -- Fizetési mód
@p_FimKodZ varchar (2), -- AFimTor
8. @p_TelDatK datetime, -- Teljesítés dátuma
@p_TelDatZ datetime,
9. @p_HitKamK varchar (1), -- Kamatszámítási mód
@p_HitKamZ varchar (1), -- HKM
10. @p_BtoKodK varchar (3), -- Bizonylattömb
@p_BtoKodZ varchar (3), -- KBtoTor
A szűrés végrehajtása és az input adatok megadása után a [Kamatszámlák generálása] gomb megnyomásával a program egy tárolt eljárás segítéségével elkészíti a kamatszámlákat.
A kamatszámlák elkészítéséhez kétszer kell meghívnunk a tárolt eljárást. Első menetben (@p_Tipus = ’L’ – Lista) kiszámoljuk, hogy az egyes előleg számlák után mennyi a kamat. Az egyes partnerek számára számlázott összesített kamat értéket összehasonlítjuk a megadott értékhatárral, és bejegyezzük a partner törzsbe, hogy az adott partner számára kell-e kamat számlát készíteni. Amennyiben az összesített kamat érték meghaladja az értékhatárt, akkor a második menetben (@p_Tipus = ’S’ – Számla) a partner számára elkészítjük a kamat számlát. Az értékhatár alatti kamat esetén a partner számára nem készül kamat számla.
CREATE PROC TcSp_EloKamSzam
--Input paraméterek
@p_Tipus varchar (1), -- L - Lista, S - Számla
@p_ZarDat datetime, -- Záró dátum
@p_FizHat datetime, -- Fizetési határidő
@p_SzmDat datetime, -- Számla kelte
@p_BtoKod varchar (3), -- Bizonylattömb
@p_ErtHat float, -- Értékhatár
@p_Opekod varchar (20), -- Operátor
@p_Terkod varchar (20), -- Terminál
--Szűrés paraméterek
@p_ParKodK varchar (6), -- Számla partner
@p_ParKodZ varchar (6), -- AParTor
@p_AlaKodK varchar (1), -- Partner áfa alany
@p_AlaKodZ varchar (1), -- AAlaTor
@p_DevKodK varchar (3), -- Devizanem
@p_DevKodZ varchar (3), -- ADevTor
@p_SzAlIdK varchar (20), -- Számla azonosító
@p_SzalIdZ varchar (20),
@p_RelaciK varchar (1), -- Reláció
@p_RelaciZ varchar (1), -- PRE
@p_JellegK varchar (1), -- Jelleg
@p_JellegZ varchar (1), -- PJL
@p_FimKodK varchar (2), -- Fizetési mód
@p_FimKodZ varchar (2), -- AFimTor
@p_TelDatK datetime, -- Teljesítés dátuma
@p_TelDatZ datetime,
@p_HitKamK varchar (1), -- Kamatszámítási mód
@p_HitKamZ varchar (1), -- HKM
@p_BtoKodK varchar (3), -- Bizonylattömb
@p_BtoKodZ varchar (3), -- KBtoTor
--Output paraméterek
@p_KamSzAlIdK varchar (20) OUTPUT, -- Elkészült kamatszámlák kezdő sorszáma
@p_KamSzAlIdZ varchar (20) OUTPUT, -- Elkészült kamatszámlák záró sorszáma
@p_LisId float OUTPUT, -- Lista azonosító
@p_Hiba varchar (400) OUTPUT -- Hibaüzenet
A tárolt eljárás működése:
1. cur_Szamla – Külső kurzor
A kamat számítás alap (előleg) számlái.
@KezdoKamat – Kezdő kamat meghatározása
2. cur_Tetel – Belső kurzor
Az egyes kamat számlák kamatszámítási intervallumai
@HitKamA ='I' – Fix kamat
PSzaElo – Az előleg befűzés tábla adatai alapján
@HitKamA ='V' – Változó kamat
AAktHit – Az áru katalógus csatolt kamat tábla és a
PSzaElo – Az előleg befűzés tábla adatai alapján
@HitKamA ='E' – Egyedi kamat
PSzaHik – Számla csatolt kamat tábla és a
PSzaElo – Az előleg befűzés tábla adatai alapján
If @KamTet = 1 – Első kamat tétel az alap számlán belül
Begin
Kamat elszámolás fej adatok
If (@p_Tipus = 'S') and (@KamSzla = 'I') – Számlázás
If @ParKodA <> @ParKodE or @DevKodA <> @DevKodE
A számla első kamattételénél, ha partnerkód vagy devizanem váltás következett be az előző alap számlához képest, akkor új kamatszámla fejet hozunk létre
insert into PSzaAla – Számla alap adatok
insert into PSzaAru
insert into pszakamf
Alap (előleg) számlánként készül egy számla áru tétel és egy kamat elszámolási fej.
Az érték adatok még nincsenek kitöltve
End
insert into pszakamt
Minden kamatszámítási intervallumhoz készül egy kamat elszámolási tétel.
Belső kurzor záró tevékenységek:
update PSzaAru – A számla áru adatok aktualizálása
update pszakamf – Kamat elszámolási fej adatok aktualizálása
Külső kurzor lezárása
If @p_Tipus = 'L'
update apartor set kamszla = kmx.kamszlax
Partner törzs – Kamatszámla szükséges mező aktualizálása
A tárolt eljárást listázási paraméterrel (@p_Tipus = ’L’ – Lista) hívjuk meg. A tárolt eljárás az adatokat temporary táblába gyűjt, melyet a rugalmas lista (TPSZAKAM) megjelenít.