🏪 Magazijn & Voorraad

Magazijnen, opslaglocaties, voorraadstanden en voorraadmutaties

Voorraadstructuur: King Software ondersteunt meerdere magazijnen (tabMagazijn), elk met meerdere opslaglocaties (tabLocatie). Per artikel en per magazijn worden minimale en maximale voorraden bijgehouden (tabArtikelMagazijn). Alle voorraadmutaties (ontvangsten, leveringen, correcties) worden vastgelegd in tabVoorraadMutatie.
tabMagazijn
Magazijnen – fysieke opslaglocaties van de organisatie
KingSystem
#KolomTypeNullableBeschrijving
1MagGidintegerNOT NULL PKUnieke identifier van het magazijn
2MagCodeintegerNOT NULLMagazijncode (numeriek)
3MagOmsnchar(40)NULLOmschrijving van het magazijn
4MagZoekcodenchar(10)NULLZoekcode voor snel opzoeken
5MagAdrGidintegerNULL FK→tabAdresFysiek adres van het magazijn
6MagLocGidVoorkeurOntvangstintegerNULL FK→tabLocatieStandaard ontvangstlocatie in dit magazijn
7MagLocGidVoorkeurBackorderintegerNULL FK→tabLocatieVoorkeurlocatie voor backorder-reserveringen
8MagLocGidVoorkeurDirecteInkoopintegerNULL FK→tabLocatieLocatie voor directe inkoop
9MagLastModifiedtimestampNULLTijdstip van laatste wijziging
tabLocatie
Opslaglocaties binnen een magazijn (vakken, legborden, palletplaatsen)
KingSystem
KolomTypeNullableBeschrijving
LocGidintegerNOT NULL PKPrimaire sleutel
LocMagGidintegerNOT NULL FK→tabMagazijnMagazijn waarbinnen de locatie valt
LocNaamnchar(20)NULLLocatienaam / locatiecode (bijv. "A01-01", "Dock-3")
LocOmsnchar(40)NULLOmschrijving van de locatie
LocIsGeblokkeerdsmallintNULLLocatie geblokkeerd (0=nee, 1=ja)
LocLastModifiedtimestampNULLTijdstip van laatste wijziging
tabArtikelMagazijn
Artikelgegevens per magazijn – minimum/maximum voorraad en standaardlocatie
KingSystem
#KolomTypeNullableBeschrijving
1ArtMagGidintegerNOT NULL PKPrimaire sleutel
2ArtMagArtGidintegerNOT NULL FK→tabArtikelArtikel
3ArtMagMagGidintegerNOT NULL FK→tabMagazijnMagazijn
4ArtMagMinimumVoorraadnumeric(15)NULLMinimale voorraad (melding/bestelling bij onderschrijding)
5ArtMagMaximumVoorraadnumeric(15)NULLMaximale voorraad (niet overschrijden bij bijbestellen)
6ArtMagDefaultLocGidintegerNULL FK→tabLocatieStandaard opslaglocatie voor dit artikel in dit magazijn
7ArtMagLocGidVoorkeurOntvangstintegerNULL FK→tabLocatieVoorkeurlocatie bij ontvangst van dit artikel
8ArtMagLastModifiedtimestampNULLTijdstip van laatste wijziging
tabArtikelLocatie
Actuele voorraad per artikel en per locatie
KingSystem
KolomTypeNullableBeschrijving
ArtLocGidintegerNOT NULL PKPrimaire sleutel
ArtLocArtGidintegerNOT NULL FK→tabArtikelArtikel
ArtLocLocGidintegerNOT NULL FK→tabLocatieOpslaglocatie
ArtLocArtPartijGidintegerNULL FK→tabArtikelPartijPartij van het artikel (indien partijregistratie)
ArtLocAantalnumeric(15)NULLActuele voorraad op deze locatie
ArtLocAantalGereserveerdnumeric(15)NULLGereserveerd aantal (voor openstaande orders)
ArtLocLastModifiedtimestampNULLTijdstip van laatste wijziging
tabVoorraadMutatie
Alle voorraadmutaties (in/uit/correctie) per artikel en locatie
KingSystem
KolomTypeNullableBeschrijving
VrmGidintegerNOT NULL PKPrimaire sleutel
VrmArtGidintegerNOT NULL FK→tabArtikelArtikel waarop de mutatie betrekking heeft
VrmLocGidintegerNULL FK→tabLocatieLocatie van de mutatie
VrmMagGidintegerNULL FK→tabMagazijnMagazijn van de mutatie
VrmSoortGidintegerNULL FK→tabVoorraadMutatieSoortenSoort mutatie (vrij te definiëren via tabVoorraadMutatieSoorten)
VrdMutSoortsmallintNULLSysteem-mutatiesoort: 0=Magazijnontvangst, 1=Levering, 2=Beginvoorraad, 3=Inventarisatie, 4=Intern gebruik, 5=Uitval, 6=Magazijnverplaatsing, 7=Overig, 8=Project, 9=Productie - component, 10=Productie - eindproduct, 11=Directe levering - afgeleverd door leverancier, 12=Directe levering - ontvangen door debiteur, 13=Partij registratie aangezet
VrmDatumdateNULLDatum van de mutatie
VrmAantalnumeric(15)NULLMutatieaantal (positief = toename, negatief = afname)
VrmKostprijsnumeric(15)NULLKostprijs per eenheid op moment van mutatie
VrmOmsnchar(40)NULLOmschrijving / toelichting bij de mutatie
VrmArtPartijGidintegerNULL FK→tabArtikelPartijPartij van het artikel (indien partijregistratie)
VrmLastModifiedtimestampNULLTijdstip van laatste wijziging
SQL-voorbeelden
Praktische query's voor de magazijnmodule

Actuele voorraad per artikel en magazijn

SELECT a.ArtCode, a.ArtOms, m.MagOms, l.LocNaam, al.ArtLocAantal, al.ArtLocAantalGereserveerd, al.ArtLocAantal - al.ArtLocAantalGereserveerd AS BeschikbaarAantal FROM KingSystem.tabArtikelLocatie al JOIN KingSystem.tabArtikel a ON a.ArtGid = al.ArtLocArtGid JOIN KingSystem.tabLocatie l ON l.LocGid = al.ArtLocLocGid JOIN KingSystem.tabMagazijn m ON m.MagGid = l.LocMagGid WHERE al.ArtLocAantal > 0 ORDER BY a.ArtCode, m.MagOms, l.LocNaam

Artikelen onder minimumvoorraad

SELECT a.ArtCode, a.ArtOms, m.MagOms, am.ArtMagMinimumVoorraad, COALESCE(SUM(al.ArtLocAantal), 0) AS ActueleVoorraad FROM KingSystem.tabArtikelMagazijn am JOIN KingSystem.tabArtikel a ON a.ArtGid = am.ArtMagArtGid JOIN KingSystem.tabMagazijn m ON m.MagGid = am.ArtMagMagGid LEFT JOIN KingSystem.tabArtikelLocatie al ON al.ArtLocArtGid = am.ArtMagArtGid LEFT JOIN KingSystem.tabLocatie l ON l.LocGid = al.ArtLocLocGid AND l.LocMagGid = am.ArtMagMagGid WHERE am.ArtMagMinimumVoorraad IS NOT NULL AND a.ArtHeeftVoorraad = 1 GROUP BY a.ArtCode, a.ArtOms, m.MagOms, am.ArtMagMinimumVoorraad HAVING COALESCE(SUM(al.ArtLocAantal), 0) < am.ArtMagMinimumVoorraad ORDER BY a.ArtCode

Voorraadmutaties van de laatste 30 dagen

SELECT vm.VrmDatum, a.ArtCode, a.ArtOms, m.MagOms, l.LocNaam, vm.VrmAantal, vm.VrmOms FROM KingSystem.tabVoorraadMutatie vm JOIN KingSystem.tabArtikel a ON a.ArtGid = vm.VrmArtGid LEFT JOIN KingSystem.tabLocatie l ON l.LocGid = vm.VrmLocGid LEFT JOIN KingSystem.tabMagazijn m ON m.MagGid = vm.VrmMagGid WHERE vm.VrmDatum >= DATEADD(DAY, -30, CURRENT_DATE) ORDER BY vm.VrmDatum DESC