Winkelkar. Een Winkelkar kan concrete producten bevatten en tekstlijnen. Alles kan gegroepeerd worden in groepen. Groepen kunnen genest worden. De volgorde van de lijnen is gegarandeerd maar is niet zondermeer via een SQL query te achterhalen. Bij het gebruik van een Visitor wordt de volgorde wel gerespecteerd. persistent vhLib.Macro 1 TECH.VhChangeInfo ROOT DOM.common.PartijID DOM.common.enu.Personality %String %String Alle lijnen zitten in 1 hoofdgroep. Deze groep bewaart de volgorde van de lijnen. De relationship zou altijd achteraan toevoegen dus kunnen we deze niet rechtstreeks gebruiken. DOM.EC.Winkelkar.GroepLijn DOM.EC.Winkelkar.Lijn children Lijst 1 %Boolean 1 Set {*}=##class(DOM.EC.Winkelkar.Winkelkar).%OpenId({ID}).IsWijzigbaar() 1 %Boolean 1 Set {*}=##class(DOM.EC.Winkelkar.Winkelkar).%OpenId({ID}).IsVerwijderbaar() 1 %String ExterneId KlantID PersonalityID ApplicatieID ApplicatieType ApplicatieID:%String 1 1 %Status KlantID:DOM.VKP.VanHoeckeKlantID DOM.common.PartijID DOM.common.Personality DOM.common.enu.Personality PersonalityID:DOM.common.enu.Personality ExterneId:%String %Boolean %String 1 %Boolean 1 %Boolean 1 %Boolean 1 %Boolean Lijn:DOM.EC.Winkelkar.Lijn %Status %Status Geeft leeg terug indien de groep niet bestaat GroepNaam:%String DOM.EC.Winkelkar.GroepLijn DOM.EC.Winkelkar.GroepLijn Een iterator over de lijnen van de lijst TECH.ListIterator Lijn:DOM.EC.Winkelkar.Lijn,InsertPos:%Integer %Status Interne method, niet gebruiken. Voegt een Lijn toe aan storage maar houdt geen rekening met groepen. Lijn:DOM.EC.Winkelkar.Lijn Verwijdert lijn uit de lijst. Lijn moet een lijn zijn die rechtstreeks op het hoofdniveau van de lijst bestaat. Lijnen in subgroepen moeten uit hun groep verwijderd worden. Als een groep verwijderd wordt, dan wordt de inhoud ook verwijderd. Als deze oproep niet $$$OK teruggeeft, kan de in-memory state verschillen van de gepersisteerde state. Het is daarom aangeraden om een %Reload uit te voeren op de lijst. Merk op dat %Reload enkel werkt als er geen references naar de lijst of een lijn open staan. Bv. een iterator of een lijn teruggegeven door een iterator. Lijn:DOM.EC.Winkelkar.Lijn %Status Interne method, niet gebruiken. Verwijdert een Lijn uit de storage, maar mag enkel opgeroepen worden vanuit GroepLijn omdat anders de Lijn niet uit de groep verwijderd wordt. Lijn:DOM.EC.Winkelkar.Lijn %Status UnID:%String DOM.EC.Winkelkar.Lijn WinkelkarVisitors welkom... Visitor:DOM.EC.Winkelkar.WinkelkarVisitor %Status insert:%Boolean 1 %Status APPS.common.enu.ApplicatieType %Library.CacheStorage ^DOM.EC.Winkelkar.WinkelkarD WinkelkarDefaultData ^DOM.EC.Winkelkar.WinkelkarD ^DOM.EC.Winkelkar.WinkelkarI ^DOM.EC.Winkelkar.WinkelkarS %%CLASSNAME AangemaaktDoor AangemaaktOp ApplicatieID GewijzigdDoor GewijzigdOp InstanceVersion KlantID Root PersonalityID ExterneId ApplicatieType