Vaste leggen van de kenmerken per product. Er wordt bewust geen link gelegd naar MetaGroep of MetaDefinitie omdat anders bij gebruik van de waarden swivel inwerking zou treden, dit mag niet om dat bv voor één kenmerk meerdere waarden kunnen ingegeven worden. Dus bij wijzigen van een kenmerk moeten voor een bepaald product alle waarden verzameld worden. persistent %Library.Persistent 0 Prod.Kenmerk.MetaDefinitie Prod.Product Meerdere waarde mogelijk %Library.String list %Library.String Sys.cTimeStamp 1 1 Product,Kenmerk IsNew:%Library.Boolean=1 %Library.Status ]]> 1 Oid:%Library.ObjectIdentity %Library.Status Toevoegen van een kenmerk aan een product Indien het kenmerk reeds bestaat wordt het oude eerst verwijderd Indien Piece delimited dan Delimiter meegeven $LB wordt automatisch herkent Opmerking lege waarden worden niet opgeslagen 1 GroepID,PRNr,Kenmerk,Values,Delimiter,UserID %Status w $$ListToPieces^vhLib(##class(Prod.Kenmerk.DataDefinitie).Get("TB",89973,"BasisType"),";") 1 GroepID,PRNr,Kenmerk 1 %List Berekent de volledige URL voor de gegeven parameters. De parameters bepalen de vertaling: - GroepID, PRNr, Kenmerk definiëren de waarde voor het kenmerk (DataDefinitie) - Taal, TextType, ToepasType zijn de vertalingsparameters, samen met de DirCode (berekende waarde) Oproepen via (test) : w ##class(Prod.Kenmerk.DataDefinitie).GetFullURL("OL",107785,"Sleutel","N","LB","WWW") 1 GroepID,PRNr,Kenmerk,Taal,TextType,ToepasType 1 %List GroepID is optioneel 1 PRNr,GroepID %Boolean Verwijderen van de DataDefinitie-objecten (+DataIndex) van product (PRNr) van een groep Als lbGroepIDs leeg is dan worden ALLE groepen verwijderd van het product 1 PRNr:%Library.String,lbGroepIDs:%Library.List %Library.Status Intern:%Library.String,Type:%Library.String %Library.String SUBSTITUTIE vereist opstellen van taaldoorsnede ... New Sleutels,AantalSleutels,SubLang,SleutelLoop,tmpSleutel ... Set Sleutels=VTA.GetVertalingsSleutels(Type) ... Set AantalSleutels=$LL(Sleutels) //Aantal te vertalen sleutels ... Set SubLang="" ... For SleutelLoop=1:1:AantalSleutels Do .... Set tmpSleutel=$LI($LI(Sleutels,SleutelLoop),2) //Het eerste element bevat het type .... If ##class(Res.VertalingAbstract).IsInternUniversal(tmpSleutel) Do //Wanneer sleutel vh type {%...} is dan is het een universele vertaling (groep %) ..... Set SubLang=SubLang _ ##class(Res.VertalingAbstract).AvailableLanguages("%",tmpSleutel,Type) .... Else Do ..... Set SubLang=SubLang _ ##class(Res.VertalingAbstract).AvailableLanguages(VertalingsGroep,tmpSleutel,Type) ... Set LanguagesOK=##class(Res.VertalingAbstract).GetLanguagesWithCountOK(SubLang,AantalSleutels) .. Else Do //-> GEEN SUBSTITUTIE, gewoon languages opvragen ... Set:(Intern'="") LanguagesOK=##class(Res.VertalingAbstract).AvailableLanguages(VertalingsGroep,Intern,Type) Quit LanguagesOK // ---< Pseudo-code >--- // Loop doorheen vertalingstypes van MetaDef (array) // . Loop doorheen elke VertalingsType (';' pieces) // .. Als VertalingsType=Type Doe // ... Als het om substitutie gaat // .... Sleutels uitlezen // .... Vertalingen van sleutels verkrijgen & samenvoegen // .... Talen extraheren met correcte count // ... Geen Substitutie // .... Vertalingen van interne waarde verkrijgen ]]> 1 Params:%Library.String %Library.String 1 GroepID:%Library.String,Kenmerk:%Library.String %Status Mogelijke waarden voor ListItems: bvb.: "*" , "1" , "1;2" , "1;2;5;7"
Als ListSep niet leeg is, worden de vertaalde items geconcateneerd (met ListSep as separator) tot één element van de $LB().]]>
LBX:%Library.String,ListSep:%Library.String,Taal:%Library.String="N",TextType:%Library.String="L" %Library.String
X:%Library.String,Taal:%Library.String="N",TextType:%Library.String="L",ClearCharEmpty:%Library.Boolean=0 %Library.String %Library.SQLQuery paPRNr:%Library.String,paGroep:%Library.String SELECT Count(ID) AS Aantal FROM Prod_Kenmerk.DataDefinitie WHERE ID Like :paPRNr || "||" || :paGroep || "||%" ]]> %Library.SQLQuery GroepID:%Library.String,Kenmerk:%Library.String,SuperKenmerk:%Library.String,SuperKMWaarde:%Library.String SELECT DISTINCT(Waarden) FROM Prod_Kenmerk.DataDefinitie WHERE Kenmerk=(:GroepID || '||' || :Kenmerk) AND Product IN (SELECT Product FROM Prod_Kenmerk.DataDefinitie WHERE Kenmerk=(:GroepID || '||' || :SuperKenmerk) AND Waarden LIKE ("%" || :SuperKMWaarde) ) %Library.SQLQuery paPRNr:%Library.String Groep) AS Groep FROM Prod_Kenmerk.DataDefinitie WHERE Product=:paPRNr]]> Geeft een lijst van alle kenmerken met resp. waarden voor een gegeven ProductNummer. %Library.SQLQuery PRNr:%Library.String Omschrijving,Kenmerk->Kenmerk), Waarden, Kenmerk->Groep->Code,Kenmerk->SubGroep FROM Prod_Kenmerk.DataDefinitie WHERE (Product = :PRNr) ORDER BY Kenmerk->VolgNr]]> Geeft een lijst van alle kenmerken toegelaten voor E-commeerce met de resp. waarden voor een gegeven ProductNummer. %Library.SQLQuery PRNr:%Library.String Omschrijving,Kenmerk->Kenmerk), Waarden, Kenmerk->Groep->Code,Kenmerk->SubGroep FROM Prod_Kenmerk.DataDefinitie WHERE (Product = :PRNr) and (Kenmerk->ToelatenEC=1) ORDER BY Kenmerk->VolgNr]]> %Library.CacheStorage ^Prod.Ken.DataDefinitieD DataDefinitieDefaultData ^Prod.Ken.DataDefinitieD ^Prod.Ken.DataDefinitieI ^Prod.Ken.DataDefinitieS %%CLASSNAME node 0 Waarden WijzigGebruiker WijzigTijdstip