💶 Prijzen & Kortingen

Prijsafspraken, staffelkortingen en historische prijswijzigingen

Prijshiërarchie: King Software kent een gelaagde prijsstructuur. De meest specifieke afspraak wint. Volgorde (van hoog naar laag prioriteit): 1) specifieke prijsafspraak op artikel+relatie → 2) prijsafspraak op artikel+debiteurgroep → 3) prijsafspraak op opbrengstgroep+relatie → 4) staffelkorting → 5) artikelverkoopprijs. Het veld PraSoort in tabPrijsAfspraak bepaalt het type afspraak.
tabPrijsAfspraak
Specifieke prijs- en kortingsafspraken per artikel, relatie of groep
KingSystem
#KolomTypeNullableBeschrijving
1PraGidintegerNOT NULL PKUnieke identifier van de prijsafspraak
2PraSoortsmallintNOT NULLType afspraak:
0 = Alleen kortings-%
1 = Alleen kortingsbedrag
3 = Prijs en kortings-%
4 = Prijs en kortingsbedrag
5 = Prijs en staffelkorting
6 = Alleen staffelkorting
3PraArtGidintegerNULL FK→tabArtikelArtikel waarop de afspraak van toepassing is (NULL = alle artikelen)
4PraNawGidintegerNULL FK→tabNawRelatie waarop de afspraak van toepassing is (NULL = alle relaties)
5PraDebGrpGidintegerNULL FK→tabDebiteurGroepenDebiteurgroep (alternatief voor specifieke relatie)
6PraOpbrGrpGidintegerNULL FK→tabOpbrengstGroepOpbrengstgroep (alternatief voor specifiek artikel)
7PraVerkoopPrijsnumeric(15)NULLVaste verkoopprijs (bij PraSoort=vaste prijs)
8PraIsInclBtwsmallintNULLPrijs inclusief BTW (0=excl, 1=incl)
9PraKortingsPercnumeric(5)NULLKortingspercentage (bij PraSoort=kortingspercentage)
10PraKortingsBedragnumeric(15)NULLKortingsbedrag per eenheid (bij PraSoort=kortingsbedrag)
11PraStfKopGidintegerNULL FK→tabStaffelKopStaffeldefinitie (bij PraSoort=staffel)
12PraValNummerintegerNULL FK→tabValutaValuta van de prijs (NULL = basisvaluta)
13PraVkeGidintegerNULL FK→tabVerkoopEenheidVerkoopseenheid waarvoor de afspraak geldt
14PraCombiSoortsmallintNULLCombinatiesoort:
0 = Standaard artikel-korting
1 = Debiteurgroep/Opbrengstgroep
2 = Debiteurgroep/Artikel
3 = Debiteur/Opbrengstgroep
4 = Debiteur/Artikel
5 = Artikel/Verkoopeenheid
15PraOpmlong nvarcharNULLOpmerking bij de prijsafspraak
16PraLastModifiedtimestampNULLTijdstip van laatste wijziging
tabStaffelKop
Staffeldefinities (hoofd) – groepering van hoeveelheidskorting
KingSystem
#KolomTypeNullableBeschrijving
1StfKopGidintegerNOT NULL PKUnieke identifier van de staffelkop
2StfKopCodenchar(10)NOT NULLStaffelcode (unieke code voor deze staffel)
3StfKopOmsnchar(40)NULLOmschrijving van de staffel
4StfKopIsPercKortingsmallintNOT NULLType korting:
0 = Bedrag
1 = Percentage
5StfKopLastModifiedtimestampNULLTijdstip van laatste wijziging
tabStaffelRegel
Staffelregels – kwantumkortingen per aantalniveau
KingSystem
#KolomTypeNullableBeschrijving
1StfRglGidintegerNOT NULL PKPrimaire sleutel
2StfRglStfKopGidintegerNOT NULL FK→tabStaffelKopBijbehorende staffelkop
3StfRglVanafAantalnumeric(15)NOT NULLMinimale afname-hoeveelheid voor deze staffelregel
4StfRglKortingnumeric(15)NULLKortingswaarde: percentage of bedrag (afhankelijk van StfKopIsPercKorting)
5StfRglIsPercKortingsmallintNOT NULLType korting op regelniveau (overrulet staffelkop):
0 = Bedrag
1 = Percentage
6StfRglLastModifiedtimestampNULLTijdstip van laatste wijziging
tabArtikelPrijsHistorie
Historisch overzicht van alle verkoopprijswijzigingen per artikel
KingSystem
#KolomTypeNullableBeschrijving
1AphGidintegerNOT NULL PKPrimaire sleutel
2AphArtGidintegerNOT NULL FK→tabArtikelArtikel waarop de prijswijziging betrekking heeft
3AphDatumPrijswijzigingtimestampNOT NULLDatum en tijd van de prijswijziging
4AphGewijzigdDoornchar(10)NOT NULLGebruikersnaam van degene die de prijs heeft gewijzigd
5AphVerkPrijsnumeric(15)NOT NULLNieuwe verkoopprijs na de wijziging
6AphVerkprijsIsInclsmallintNOT NULLPrijs inclusief BTW (0=excl, 1=incl)
7AphPrijsPernumeric(15)NOT NULLPrijs per aantal eenheden
8AphVerkPrijsNettonumeric(15)NOT NULLNettoverkoopprijs (na eventuele korting)
9AphKortingsPercnumeric(15)NULLToegepast kortingspercentage
10AphKortingsBedragnumeric(15)NULLToegepast kortingsbedrag
11AphLastModifiedtimestampNULLTijdstip van laatste wijziging van dit historielijst-record
tabPrijsWijzigingsKop / tabPrijsWijzigingsRegel
Batches van prijswijzigingen (bulkwijzigingen via de prijswijzigingsfunctie)
KingSystem
Kolom (Kop)TypeBeschrijving
PwkGidintegerPrimaire sleutel van de wijzigingsbatch
PwkOmsnchar(40)Omschrijving van de prijswijzigingsbatch
PwkDatumdateDatum van de prijswijziging
PwkGewijzigdDoornchar(10)Gebruiker die de batch heeft aangemaakt
PwkDgbGidintegerDagboek voor automatische journaalboekingen
PwkLastModifiedtimestampTijdstip van laatste wijziging
Kolom (Regel)TypeBeschrijving
PwrGidintegerPrimaire sleutel van de wijzigingsregel
PwrPwkGidintegerVerwijzing naar de koptabel (tabPrijsWijzigingsKop)
PwrArtGidintegerArtikel waarvan de prijs wordt gewijzigd
PwrNieuweVerkPrijsnumeric(15)Nieuwe verkoopprijs
PwrNieuweKostprijsnumeric(15)Nieuwe kostprijs
PwrLastModifiedtimestampTijdstip van laatste wijziging
Prijsbepalingslogica
Hoe King Software de verkoopprijs bepaalt bij een orderregel

Prioriteitsvolgorde prijsbepaling

Stap 1: Zoek specifieke prijsafspraak: artikel + relatie (PraNawGid + PraArtGid)
Stap 2: Zoek prijsafspraak: artikel + debiteurgroep (PraDebGrpGid + PraArtGid)
Stap 3: Zoek prijsafspraak: opbrengstgroep + relatie (PraOpbrGrpGid + PraNawGid)
Stap 4: Zoek staffelkorting op artikel (via tabNawStaffelKop bij relatie)
Stap 5: Gebruik standaard verkoopprijs artikel (tabArtikel.ArtVerkprijs)
Let op bij eigen queries: De prijslogica is complex en volledig in de applicatielaag geïmplementeerd. Bij direct queryen van de database voor prijzen dient u rekening te houden met:
• PraIsInclBtw – prijs is exclusief of inclusief BTW
• ArtVerkprijsIsIncl – idem op artikelniveau
• ArtPrijsPer / PraStfKopGid – prijs geldt per N eenheden
• Valuta-omrekening indien PraValNummer afwijkt van basisvaluta
SQL-voorbeelden
Praktische query's voor prijzen en kortingen

Alle specifieke prijsafspraken voor een relatie

SELECT a.ArtCode, a.ArtOms, p.PraSoort, p.PraVerkoopPrijs, p.PraKortingsPerc, p.PraKortingsBedrag, p.PraIsInclBtw FROM KingSystem.tabPrijsAfspraak p LEFT JOIN KingSystem.tabArtikel a ON a.ArtGid = p.PraArtGid WHERE p.PraNawGid = :naw_gid ORDER BY a.ArtCode

Staffelkorting voor een specifiek artikel (met regels)

SELECT k.StfKopCode, k.StfKopOms, r.StfRglVanafAantal, r.StfRglKorting, CASE r.StfRglIsPercKorting WHEN 1 THEN 'Percentage' ELSE 'Bedrag' END AS KortingSoort FROM KingSystem.tabPrijsAfspraak p JOIN KingSystem.tabStaffelKop k ON k.StfKopGid = p.PraStfKopGid JOIN KingSystem.tabStaffelRegel r ON r.StfRglStfKopGid = k.StfKopGid WHERE p.PraArtGid = :art_gid ORDER BY r.StfRglVanafAantal

Prijshistorie van een artikel (recentste eerst)

SELECT h.AphDatumPrijswijziging, h.AphGewijzigdDoor, h.AphVerkPrijs, h.AphPrijsPer, h.AphVerkprijsIsIncl, h.AphVerkPrijsNetto, h.AphKortingsPerc FROM KingSystem.tabArtikelPrijsHistorie h WHERE h.AphArtGid = :art_gid ORDER BY h.AphDatumPrijswijziging DESC