Dus als ik het goed heb, gaat het om orders die uit verschillende stappen bestaan, en waarbij je de goederen ook nog fysiek verplaatst. Dat kun je m.i. met behoud van historie opslaan, of zonder. De laatste variant is het simpelst, maar heeft ook nadelen. In die variant heb je één verkooprecord, waarin je met statussen aangeeft waar in de lijn de order zich bevindt. Dus als je de bestelling plaatst is de status "Geplaatst" en de lokatie "Lokatie 8". Vervolgens krijg je de status "Uitgepakt" waarbij de bestelling naar "Lokatie 7" wordt overgeboekt. En vervolgens de status "Uitleveren" waarbij de lokatie wordt omgezet naar "Lokatie 1". Je verandert per order dus steeds een aantal velden om de mutaties aan te geven. Gebruik je Orders + Deelorders, dan doe je de mutaties uiteraard in Deelorders, want de mutaties hebben betrekking op de artikelen, niet op de bestelling.
Nadeel is, dat je alleen de mutaties verandert, en dus geen historie hebt. Zodra je een artikel omzet, is de vorige status weg. Ook kun je in de bestelling niet aangeven of er problemen zijn geweest. Als je een bestelling hebt van 300 glazen, en je laat onderweg de doos vallen, kan er best een keer een glas sneuvelen. Dat moet dan uiteraard worden vervangen. De vraag is overigens of je dat überhaupt wel in de order moet vastleggen; de klant heeft hier uiteraard geen boodschap aan.
Maar het historieverhaal zou dus wel een factor kunnen zijn. Dat kun je dan oplossen door aan de bestelregels een tabel te koppelen met mutaties, zodat elke bestelregel eigen mutatierecords krijgt. Hier staan dan wat meer gegevens in (je hebt nu ook datum- en tijdvelden en zo).
Maar ik zie nog steeds niet zoveel noodzaak om voorraad tabellen bij te houden, want uit die mutaties kun je alles herleiden wat je maar wilt. Het enige voordeel van het opslaan van de voorraad in een tabelveld (verder niet aan de verkopen gerelateerd) is dat je makkelijk de voorraad kunt controleren. Maar daarvoor kun je een status "Controle" of zoiets toevoegen, waarbij je voor een artikel dan een mutatierecord toevoegt waarin je geen verkoop hebt, maar een telling. Uit de verkopen en inkopen zou namelijk een getal moeten rollen dat aangeeft wat de voorraad moet zijn ([Ingekocht] - [Verkocht] = [Voorraad]), maar de werkelijke voorraad doe je door fysiek te gaan tellen in het magazijn. Het verschil (bijvoorbeeld door breuk) is dan een mutatie.