PRKENMERK ;Produktkenmerken [ 08/25/2003 3:43 PM ] ; #Include %occInclude ; VERWERK(PRNr,Raadpl) New %TC,%SC,zb,R,Quit,List,sMod,NoMod,Kenmerk New:'$G(RPLPR) Input Set Raadpl=$G(Raadpl) Do:Raadpl STORE^vhTERMINA() Do DISPLAY^vhScherm("PRKENMERK") Set NoMod=+Raadpl If 'NoMod Do Quit:Quit .Set Quit=0 .Do ADD^vhLock("^Prod.Ken.DataDefinitieD(PRNr)") .If '%TC Do LDISP^vhLock("^Prod.Ken.DataDefinitieD(PRNr)",$P(^KPR(PRNr,0),D)) Set Quit=1 If ('##class(DOM.DomeinContext).Instance().GeefProductTypeAPI().IsTandemboxProduct(PRNr)) && ('##class(DOM.DomeinContext).Instance().GeefProductTypeAPI().IsKaderdeurProduct(PRNr)) && ($P($G(^KPR(PRNr,15)),"\",13)) { Do FETCHFrameworkProduct(PRNr,.Kenmerk) } Else { Do FETCH(PRNr,.Kenmerk) } Do INIT^vhLIST("PRKENMERK","LIJST",.List),WRITE^vhLIST(.List) For Do Quit:Quit .Do COMMAND .Set Quit=0 .If Raadpl,NoMod,$L(Input) Set Quit=1 Do:Raadpl REFRESH^vhTERMINA() Quit ; RAADPL(PRNr,RPLPR) Set RPLPR=$G(RPLPR) Do VERWERK(PRNr,1) Set:RPLPR VTB=$G(U4),SW2=0,R=Input Quit ; COMMAND Set Input=$$SCROLL^vhLIST(.List) If Input="COM" Set Input="" Do CALL^vhMenu("PRKENMERK") Quit:Input="" Do EXEC^vhMenu("PRKENMERK",.Input) Quit ; FETCH(PRNr,Kenmerk) New I,R,Result,Query,Status,Count,ID,KenmerkNaam,Waarden,KenmerkVolgNr,Select &sql( DECLARE KenmerkFetch CURSOR FOR SELECT ID, Kenmerk->Kenmerk, isnull( Kenmerk->Omschrijving,Kenmerk->Kenmerk), Waarden,isnull(Kenmerk->Groep->Omschrijving,Kenmerk->Groep->Code), Kenmerk->SubGroep,UnID,Kenmerk->Format INTO :ID,:Code,:KenmerkNaam,:Waarden,:Groep,:SubGroep,:UnID,:Format FROM Prod_Kenmerk.DataDefinitie WHERE (UnId >= :PRNr) and (UnId <(:PRNr+1)) ORDER BY Kenmerk->Groep->Code,UnID,Kenmerk->VolgNr ) &sql(OPEN KenmerkFetch) Set Count=0 set MemGroep="",MemUnID="" Kill MemSubGroep For &sql(FETCH KenmerkFetch) Quit:SQLCODE Do . ;w Groep," ",SubGroep," ",KenmerkNaam,! . Quit:KenmerkNaam="ProdMulti" . Set Select=1 . Set Waarden=$$LCVTSimple^vhLib(Waarden,D) . If (MemGroep'=Groep)||(MemUnID'=UnID) Do . . Set Kenmerk($I(Count))="&S&C"_Groep_$S($P(UnID,".",2):" ("_$P(UnID,".",2)_")",1:"") . Else If $D(MemSubGroep),MemSubGroep'=SubGroep Do . . Set Kenmerk($I(Count))="&S&C"_SubGroep . Set MemSubGroep=SubGroep . Set MemUnID=UnID . Set MemGroep=Groep . For I=1:1:$L(Waarden,D) Do . . Quit:$P(Waarden,D,I)="" . . If Format=##class(DOM.PM.enu.MetaDefinitieFormat).Datum() Do . . . Set $P(Waarden,D,I)=$$EXTDATE^vhLib.DataTypes($P(Waarden,D,I)) . . Set R=Select_D_ID_D_KenmerkNaam_D_$P(Waarden,D,I) . . Set Kenmerk($I(Count))=R . . Set (Select,ID,KenmerkNaam,KenmerkVolgNr)="" &sql(CLOSE KenmerkFetch) Quit FETCHFrameworkProduct(PRNr,Kenmerk) #dim ProductSpecificatieID As %String = $P(^KPR(PRNr,15),"\",13) #dim HoofdIK As DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken = ##class(DOM.PM.Maatwerk.Calc.Common.ProductSpecificatie).%OpenId(ProductSpecificatieID).GeefIngegevenKenmerken() Do VerwerkIngegevenKenmerken(HoofdIK) Do FETCHGekoppeldMatIngegevenKenmerk(HoofdIK,##class(DOM.PM.Maatwerk.Calc.Common.enu.GekoppeldIKType).MatX()) Do FETCHGekoppeldMatIngegevenKenmerk(HoofdIK,##class(DOM.PM.Maatwerk.Calc.Common.enu.GekoppeldIKType).MatY()) Quit FETCHGekoppeldMatIngegevenKenmerk(HoofdIK,GekoppeldIKType) #dim IngegevenKenmerkenAPI As DOM.PM.IngegevenKenmerkenAPI = ##class(DOM.DomeinContext).Instance().GeefIngegevenKenmerkenAPI() If IngegevenKenmerkenAPI.HeeftGekoppeldeKenmerken(HoofdIK,GekoppeldIKType) { Set Verwerker = ##class(DOM.PM.Maatwerk.Calc.Common.GekoppeldeIK.MatVervolledigerVanMaatwerkProduct).%New() #dim IKVoorSamengesteldProduct As DOM.PM.Maatwerk.Calc.Common.impl.MATKenmerken = Verwerker.Verwerk(HoofdIK,GekoppeldIKType) Do VerwerkIngegevenKenmerken(IKVoorSamengesteldProduct) } Quit VerwerkIngegevenKenmerken(IngegevenKenmerken) New i,Select,CompiledClass,PropertiesIterator,WaardeTeTonen,TeVerwerken,PropertyClass,Iterator Set CompiledClass = ##class(%Dictionary.CompiledClass).%OpenId(IngegevenKenmerken.%ClassName(1)) Set PropertiesIterator = ##class(TECH.ListIterator).%New(CompiledClass.Properties) Set i = $Order(Kenmerk(""),-1) + 1 Set Kenmerk(i)="&S&C"_CompiledClass.SqlTableName Set i = i + 1 Set TeVerwerken = ##class(%ListOfObjects).%New() While (PropertiesIterator.HasNext()) { Set Property = PropertiesIterator.Next() If ('Property.Private) && (Property.Origin '= "DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken") && (Property.Origin '[ "%") { Set PropertyClass = ##class(%Dictionary.CompiledClass).%OpenId(Property.Type) Set PropertyWaarde = $zobjproperty(IngegevenKenmerken,Property.Name) If (PropertyClass.ClassType = "datatype") { If (Property.Type = "%Library.Boolean") { Set PropertyWaarde = $S(PropertyWaarde:"Ja",1:"Nee") Set Kenmerk(i) = "1\\"_Property.Name_"\"_PropertyWaarde } Else { Set Kenmerk(i) = "1\\"_Property.Name_"\"_$zobjclassmethod(Property.Type,"LogicalToDisplay",PropertyWaarde) } Set i = i + 1 } ElseIf (PropertyClass.Super [ "DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken") && (PropertyWaarde '= "") { Do TeVerwerken.Insert(PropertyWaarde) } ElseIf ($IsObject(PropertyWaarde)) && (PropertyWaarde.%Extends("DOM.PM.Maatwerk.Calc.Common.impl.LadeUitsparingData")) { Do TeVerwerken.Insert(PropertyWaarde) } ElseIf ($IsObject(PropertyWaarde)) && (PropertyWaarde.%Extends("DOM.PM.Maatwerk.Calc.Common.impl.TAORGUIKenmerken") || PropertyWaarde.%Extends("DOM.PM.Maatwerk.Calc.Common.impl.LBXGUIKenmerken") ) { Do TeVerwerken.Insert(PropertyWaarde) } Else { ;Do WLIP^vhDBG(97,"property ?? - "_PropertyClass.ClassType_" "_ PropertyWaarde _ $C(13,10) _ $$ObjToText^vhLib(PropertyClass)) } } } Set Iterator = ##class(TECH.ListIterator).%New(TeVerwerken) While (Iterator.HasNext()) { Do VerwerkIngegevenKenmerken(Iterator.Next()) } Quit REFRESH New sFL Do DISPLAY^vhScherm("PRKENMERK") If PRNr,$D(List) Do WRITE^vhLIST(.List) Quit ;