#include %occInclude #include %VHMacro ; Do ##class(Prod.Kenmerk.MetaDefinitie).BuildMeta(Groep) ; Do BuildMeta(Groep) New GrpObj Set Groep=$G(Groep,"TB") ; Default groep = "TB" - TandemBox productkenmerken Do DeleteMetaGroep(Groep) Set GrpObj=$$CreateMetaGroep(Groep) Do AddMetaDefs(GrpObj) Do GrpObj.%Close() w "BuildMeta is afgewerkt.",! Quit InitMGdata(Mdata,Groep) ; Mdata als .local doorgeven ; Struct. ListBuild voor MetaGroep: $LB( Omschrijving, VertalingsGroep) ; MetaGroep Defaults: ("Oms. "_Groep, Groep ,) #define iINC $INCREMENT(i) New i Set i=0 Kill Mdata(Groep,"MG") If Groep="TB" Do . Set Mdata(Groep,"MG")=$LB("TandemBOX","TB") If Groep="TBX" Do . Set Mdata(Groep,"MG")=$LB("TandemBOX op Maat") If Groep="GRP" Do . Set Mdata(Groep,"MG")=$LB("Greep op Maat") If Groep="TLM" Do . Set Mdata(Groep,"MG")=$LB("Verlichting op Maat") Else If Groep="OL" Do . ;Set Mdata(Groep,"MG")=$LB("ORGALUX","PK") Quit InitMDdata(Mdata,Groep) ; Mdata als .local doorgeven ; Struct. ListBuild voor MetaDefs: $LB(Kenmerk, VolgNr, Format, Multiple, MultipleDisplay,Omschrijving,SubGroep) ; MetaDefs Defaults: (, i , "T" , 1 , 1 ) ; Voor embedded objects: ; - Op Subnode ("VTT",ID) komt VertaalTrans (ID=VertalingsType) ; - Op Subnode ("VTTL",ID) komt VertaalTransLink (ID=VertalingsType) ; - ... #define iINC $INCREMENT(i) New i Set i=0 Kill Mdata(Groep,"MD") If Groep="TB" Do . ;Set Mdata(Groep,"MD",$$$iINC)=$LB("SortKey") . ;Set Mdata(Groep,"MD",$$$iINC)=$LB("TypeNr") . ;Set Mdata(Groep,"MD",$$$iINC)=$LB("OmsN1") . ;Set Mdata(Groep,"MD",$$$iINC)=$LB("OmsN2") . ;Set Mdata(Groep,"MD",$$$iINC)=$LB("Stock") . ;Set Mdata(Groep,"MD",$$$iINC)=$LB("KleurN") . Set Mdata(Groep,"MD",$$$iINC)=$LB("tB",,"I") . Set Mdata(Groep,"MD",$$$iINC)=$LB("BasisType") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""BasisType-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("LiRe") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""LiRe-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("Design") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""Design-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("GlijderType") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""GlijderType-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("FrontType") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""FrontType-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("Verpakking") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""Verpakking-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("LadeDiepte") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("T","{%MM}") . Set Mdata(Groep,"MD",$$$iINC)=$LB("BreedteIntern",,"F") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("T","{%MM}") . Set Mdata(Groep,"MD",$$$iINC)=$LB("Kleur") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""Kleur-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("DraagKracht") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("T","{%KG}") . Set Mdata(Groep,"MD",$$$iINC)=$LB("ZijwandHoogte") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""ZijwandHoogte-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("RugHoogte") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""RugHoogte-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("RugBreedte") . Set Mdata(Groep,"MD",$$$iINC)=$LB("FBevestiging") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""FBevestiging-""_X") . Set Mdata(Groep,"MD",$$$iINC)=$LB("Dim1",,"F") . Set Mdata(Groep,"MD",$$$iINC)=$LB("AftrekRug",,"F") . Set Mdata(Groep,"MD",$$$iINC)=$LB("AftrekBodem",,"F") . Set Mdata(Groep,"MD",$$$iINC)=$LB("Actief") . Set Mdata(Groep,"MD",$$$iINC)=$LB("Opties") . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""Opties-""_X") If Groep="TBX" Do . Set Mdata(Groep,"MD",$$$iINC)=$LB("DS",,,,,"Design","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("LC",,,,,"LadeCode","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("GT",,,,,"Uittrekbaarheid","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("KLAS",,,,,"Klasse","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("LT",,,,,"Fronttype","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("ZW",,,,,"Zijwand hoogte","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("RH",,,,,"Rughoogte","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("FB",,,,,"Frontbevestiging","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("LD",,"I",,,"Ladediepte","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("WD",,,,,"Wanddikte","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("CB",,"F",,,"Corpusbreedte","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("OPVLL",,"I",,,"Opvullijst links","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("OPVLR",,"I",,,"Opvullijst rechts","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("MTIB",,"B",,,"Min Tolerantie op IB","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("SPZK",,,,,"Spoelbakzijkant","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("DK",,"I",,,"Draagkracht","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("KB",,,,,"Kleur: Bodem","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("KF",,,,,"Kleur: Front","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("RK",,,,,"Kleur: Reling","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("KL",,,,,"Kleur: Lade","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("KR",,,,,"Kleur: Rug","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("KX",,,,,"Kleur: BoxSide","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("KSP",,,,,"Kleur: Spoelbak acc.","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("BM",,,,,"Blumotion","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("SB",,"B",,,"Stabilisator","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("FS",,,,,"Frontsteun","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("BS",,,,,"Boxside","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("SR",,,,,"Stalen rug","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("PRO",,,,,"TANDEMBOX pro","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("ASM",,,,,"Antislipmat","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("BHM",,,,,"Boren Hangmap voor BuroBox","BASIS") . Set Mdata(Groep,"MD",$$$iINC)=$LB("MATKL",,,,,"Plaatmateriaal klant","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("VERPAK",,,,,"Verpakking","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMCP",,,,,"Niet meeleveren: Corpusprofiel","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMRL",,,,,"Niet meeleveren: Zijreling","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMAK",,,,,"Niet meeleveren: Afdekkap","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMBDS",,,,,"Niet meeleveren: Bodemsteun","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMBMM",,,,,"Niet meeleveren: Blumotion meenemer","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMBMB",,,,,"Niet meeleveren: Blumotion behuizing","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMFB",,,,,"Niet meeleveren: Frontbevestiging","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMBS",,,,,"Niet meeleveren: Boxside","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMOVL",,,,,"Niet meeleveren: Opvullijst","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("NMSPDL",,,,,"Niet meeleveren: Dwarslatjes spoelbak","OPTIE") . Set Mdata(Groep,"MD",$$$iINC)=$LB("VPLA",,,,,"Verpak Ladeprofiel","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("VPCP",,,,,"Verpak Corpusprofiel","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("VPRUG",,,,,"Verpak Rughouder","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("VPAK",,,,,"Verpak Afdekkap","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("VPFS",,,,,"Verpak Frontstuk","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("VPRL",,,,,"Verpak Reling","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("RLIK",,,,,"Reling Inkorten","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("DC",,,,,"Design Code","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("IB",,,,,"Interne Breedte","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("SPBR",,,,,"Spoelbakbreedte","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("IsSR",,,,,"Met Stalen rug","CALC") . Set Mdata(Groep,"MD",$$$iINC)=$LB("Staffel",,,,,"Staffel","CALC") If Groep="GRP" Do . Set Mdata(Groep,"MD",$$$iINC)=$LB("DS",,,,,"Design",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("AFW",,,,,"Afwerking",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("LG",,"F",,,"Lengte van de greep",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("LZ",,"F",,,"Zaaglengte",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("Staffel",,,,,"Staffel",) If Groep="TLM" Do . Set Mdata(Groep,"MD",$$$iINC)=$LB("LP",,"F",,,"Lengte profiel",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("AS",,,,,"Afdekscherm",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("UL",,,,,"Uitgang links",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("UR",,,,,"Uitgang rechts",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("EKL",,,,,"Eindkap links",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("EKR",,,,,"Eindkap rechts",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("AL",,,,,"Aftrek links",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("AR",,,,,"Aftrek rechts",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("SN",,,,,"Snoeruitgang",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("SNLX",,,,,"Snoerlengte",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("LLAMP",,,,,"Lijst van lampen",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("LPOS",,"F",,,"Lijst van posities",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("BW",,,,,"Berekeningswijze",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("SW",,,,,"Schakelaar",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("XBBOD",,,,,"Extra boringen in bodem",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("XBRUG",,,,,"Extra boringen in rug",) . Set Mdata(Groep,"MD",$$$iINC)=$LB("VPAK",,,,,"Verpakking",) Else If Groep="OL" Do . ;Kill Mdata(Groep,"MD") . ;Set Mdata(Groep,"MD",$$$iINC)=$LB("Kenm") Quit DeleteMetaGroep(Groep) // Verwijdert de MetaGroep en al zijn kinderen (=MetaDefinities) Quit:('##class(Prod.Kenmerk.MetaGroep).%ExistsId(Groep)) w "Verwijderen van de Product MetaGroep "_Groep_" en al zijn MetaDefinities ...",! Do ##class(Prod.Kenmerk.MetaGroep).%DeleteId(Groep) w "De Meta's van "_Groep_" zijn verwijderd",! Quit CreateMetaGroep(Groep) New GrpObj,MGdata,lbData w "Aanmaken Product MetaGroep: Code="_Groep,! Set GrpObj=##class(Prod.Kenmerk.MetaGroep).%New() Do InitMGdata(.MGdata,Groep) Set lbData=MGdata(Groep,"MG") Set GrpObj.Code=Groep Set GrpObj.Omschrijving=$LG(lbData,1, "Oms. "_Groep) Set GrpObj.VertalingsGroep=$LG(lbData,2, Groep) Quit GrpObj AddMetaDefs(GrpObj) Quit:('GrpObj)||(GrpObj.Code="") New MDdata,i,Groep,MDefSwiz New emKey,emID,arEmbed,Ok w "Aanmaken MetaDefinities voor de productgroep "_GrpObj.Code_" ...",! Set Groep=GrpObj.Code Do InitMDdata(.MDdata,Groep) Set i="" For Set i=$O(MDdata(Groep,"MD",i)) Quit:(i="") Do . Do CreateMetaDef(GrpObj,$LB("")_MDdata(Groep,"MD",i),i) . Quit:('MDefSwiz) . Set emKey="" . For Set emKey=$O(MDdata(Groep,"MD",i,emKey)) Quit:(emKey="") Do .. Kill arEmbed .. Merge arEmbed=MDdata(Groep,"MD",i,emKey) .. Do:(emKey="VTT") amdVertaalTrans(MDefSwiz,.arEmbed) .. Do:(emKey="VTTL") amdVertaalTransLink(MDefSwiz,.arEmbed) .. Set Ok=MDefSwiz.%Save() .. w:('Ok) "Fout bij creatie embedded-objects (Key:"_emKey_")"_$$ParseStatus^vhLib(Ok),! Quit CreateMetaDef(GrpObj,lbData,i) New MDef,Ok Set MDef=##class(Prod.Kenmerk.MetaDefinitie).%New() ;w $$ListToPieces^vhLib(lbData,";") Set MDef.Groep=GrpObj ;$LI(lbData,1) Set MDef.Kenmerk=$LG(lbData,2) Set MDef.VolgNr=$LG(lbData,3,i) Set MDef.Format=$LG(lbData,4,"T") Set MDef.Multiple=$LG(lbData,5,1) Set MDef.MultipleDisplay=$LG(lbData,6,1) Set:$L($LG(lbData,7)) MDef.Omschrijving=$LG(lbData,7) Set:$L($LG(lbData,8)) MDef.SubGroep=$LG(lbData,8) Set Ok=MDef.%Save() If Ok Do . W "Voor groep "_$S(MDef.Groep:MDef.Groep.Code, 1:"?")_" : Kenmerk "_MDef.Kenmerk_" aangemaakt",! . Set MDefSwiz=MDef Else Do . W "Fout "_$$ParseStatus^vhLib(Ok),! Do MDef.%Close() Quit amdVertaalTrans(MDef,arEmbed) ; arEmbed als .local doorgeven New VTT Set emID="" For Set emID=$O(arEmbed(emID)) Quit:(emID="") Do . Set VTT=##class(Prod.Kenmerk.VertaalTrans).%New() . Set VTT.Kenmerk=MDef . Set VTT.VertalingsTypes=emID . Set VTT.SleutelSelectExecType=$LG(arEmbed(emID),1,"") . Set VTT.SleutelSelectExec=$LG(arEmbed(emID),2,"") . Set VTT.WaardeExecType=$LG(arEmbed(emID),3,"") . Set VTT.WaardeExec=$LG(arEmbed(emID),4,"") . Do VTT.%Close() Quit amdVertaalTransLink(MDef,arEmbed) ; arEmbed als .local doorgeven New VTTL Set emID="" For Set emID=$O(arEmbed(emID)) Quit:(emID="") Do . Set VTTL=##class(Prod.Kenmerk.VertaalTransLink).%New() . Set VTTL.Kenmerk=MDef . Set VTTL.VertalingsTypes=emID . Set VTTL.SleutelSelectExecType=$LG(arEmbed(emID),1,"") . Set VTTL.SleutelSelectExec=$LG(arEmbed(emID),2,"") . Do VTTL.%Close() Quit ; ===================================================================================================== ; DATA ; ===================================================================================================== NewObjectViaList() ; Parameters: Params #define D "\" ; Params=Groep\Kenmerk\PRNr\lstWaarde Quit:($G(Params)="") "" New DDef,lstWaarde,i,MDefID,SaveOK Set MDefID=$P(Params,$$$D,1)_"||"_$P(Params,$$$D,2) Quit:('##class(Prod.Kenmerk.MetaDefinitie).%ExistsId(MDefID)) "" ; Kenmerk is niet gedefinieerd! Set DDef=##class(Prod.Kenmerk.DataDefinitie).%New() Do DDef.ProductSetObjectId($P(Params,$$$D,3)) ; PRNr Do DDef.KenmerkSetObjectId(MDefID) Set lstWaarde=$P(Params,$$$D,4) For i=1:1:$L(lstWaarde,";") Do:($L($$$Trim($P(lstWaarde,";",i)))) . Do DDef.Waarden.Insert($$$Trim($P(lstWaarde,";",i))) Set SaveOK=DDef.%Save() Do DDef.%Close() Quit $S('SaveOK:"0:"_$$ParseStatus^vhLib(SaveOK) ,1:1) DeleteDataDef(Groep) If $G(Groep)="" Do Quit . ;Do ##class(Kenm.Basis.DataDefinitie).%DeleteExtent() ; Else New DDefID w "Begin Delete",! &sql(DECLARE crsDD CURSOR FOR SELECT ID INTO :DDefID FROM Prod_Kenmerk.DataDefinitie WHERE (Kenmerk LIKE :Groep || "||%")) &sql(OPEN crsDD) For &sql(FETCH crsDD) Quit:SQLCODE Do ##class(Prod.Kenmerk.DataDefinitie).%DeleteId(DDefID) &sql(CLOSE crsDD) Quit ; See global/nodes: ^Prod.Ken.DataDefinitieD(,"OL||DynSpace" WaardenSortMultiVal() ; Parameters: GroepID,Kenmerk New MDefID,MDef,lbWSort,PRNr,i,L,tmpLB,lbNew Set MDefID=$G(GroepID)_"||"_$G(Kenmerk) &sql(SELECT WaardenSortering INTO :lbWSort FROM Prod_Kenmerk.MetaDefinitie WHERE (ID=:MDefID)) Quit:($G(lbWSort)="") "" Set L=$LL(lbWSort) Set PRNr="" For Set PRNr=$O(^Prod.Ken.DataDefinitieD(PRNr)) Quit:(PRNr="") Do . Set tmpLB=$LG($G(^Prod.Ken.DataDefinitieD(PRNr,MDefID)),1) . Quit:(tmpLB="") . If $LL(tmpLB)=1 Set lbNew=tmpLB . Else Do .. Set lbNew="" .. For i=1:1:L Set:($LF(tmpLB,$LI(lbWSort,i))) lbNew=lbNew_$LB($LI(lbWSort,i)) .. w "--> ("_PRNr_") "_$$$LCVT(lbNew),! . Set $LI(^Prod.Ken.DataDefinitieD(PRNr,MDefID),1)=lbNew . ;s:(PRNr=58790) PRNr=$O(^Prod.Ken.DataDefinitieD(""),-1) ; Quit early, temp!!! Quit $$$OK