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 New Product Set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(PRNr) If (Product.%Extends("DOM.PM.TAOOProduct.TAOOLade")) { Do FETCHFrameworkProduct(Product,.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 INTO :ID,:Code,:KenmerkNaam,:Waarden,:Groep,:SubGroep,:UnID 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)="" . . 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(Product,Kenmerk) New IngegevenKenmerken,i,Select,CompiledClass,PropertiesIterator Set IngegevenKenmerken = Product.GeefProductSpecificatie().GeefIngegevenKenmerken() Set CompiledClass = ##class(%Dictionary.CompiledClass).%OpenId(IngegevenKenmerken.%ClassName(1)) Set PropertiesIterator = ##class(TECH.ListIterator).%New(CompiledClass.Properties) Set i = 1 While (PropertiesIterator.HasNext()) { Set Property = PropertiesIterator.Next() If ('Property.Private) && ('Property.InheritedId) { Set PropertyWaarde = $zobjproperty(IngegevenKenmerken,Property.Name) If (Property.Type = "%Library.Boolean") { Set PropertyWaarde = $S(PropertyWaarde:"Ja",1:"Nee") } Set Kenmerk(i) = "1\\"_Property.Name_"\"_$zobjclassmethod(Property.Type,"LogicalToDisplay",PropertyWaarde) Set i = i + 1 } } Quit REFRESH New sFL Do DISPLAY^vhScherm("PRKENMERK") If PRNr,$D(List) Do WRITE^vhLIST(.List) Quit ;