InitializeCSP Set GroepID="OL" Set Taal=$ZCVT($G(%request.Data("taal",1)), "U") Set:(Taal="")!("N;F;D;E"'[Taal) Taal="N" ; VH's Default Quit PrepareKenmerkValues ; Parameters: GroepID,Kenmerk,Taal,KMValues,FixedSubType ; KMValues als .Local doorgeven #define TRIM(%v) $ZSTRIP(%v,"<>W") #define LabelType "L" #define TextType "K" Quit:($G(GroepID)="") Quit:($G(Kenmerk)="") Kill KMValues Set KMValues="" New MetaObj,MetaSort,blnSort,rsData,Val,i,j Set MetaObj=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_Kenmerk) Quit:('MetaObj) Set KMValues=MetaObj.VertaalItem("§",Taal,$$$LabelType) ; Vertaling van de MetaDefinie zelf Set MetaSort=MetaObj.WaardenSortering ; $$pkvObjectListToLB() Set blnSort=($LL(MetaSort)>0) Set rsData=##class(%ResultSet).%New("Prod.Kenmerk.DataDefinitie:LijstBeperkteKenmerkWaarden") If $L($G(FixedSubType)) Do . Do rsData.Execute(GroepID,Kenmerk,"SubType",FixedSubType) Else Do . Do rsData.Execute(GroepID,Kenmerk,Kenmerk,"%") ; Kenmerk=SuperKenmerk ==> rs geeft alle waarden van dit kenmerk (geen beperkte lijst) For Quit:('rsData.Next()) Do . For i=1:1:$LL(rsData.GetData(1)) Do .. Set Val=$$$TRIM($LG(rsData.GetData(1),i)) .. Quit:('$L(Val)) .. Set j=$S(blnSort:$$pkvGetSortIndex($LF(MetaSort,Val)), 1:Val) ; sorteer-positie .. Set KMValues(j,"IN")=Val .. Set KMValues(j,"VT")=MetaObj.VertaalItem(Val,Taal,$$$TextType) Do rsData.%Close() ; Nabewerking voor Kenmerk "Breedte" If Kenmerk="Breedte", GroepID="OL" Do pkvFilterNonNumeric Do MetaObj.%Close() Quit pkvObjectListToLB(objList) New Key,Val,LB Set LB="" Set Key="" For Set Val=objList.GetNext(.Key) Quit:(Key="") Set LB=LB_$LB($$$TRIM(Val)) Quit LB pkvGetSortIndex(I) If (I=0)&&(+$O(KMValues(""))'>0) Set I=$O(KMValues(""))-1 ; Negatief opbouwen Quit I pkvFilterNonNumeric ;Kill ^wvDEBUGCSP ;Merge ^wvDEBUGCSP=KMValues New NumSort,LBVals Set i="" For Set i=$O(KMValues(i)) Quit:(i="") Do . Set Val=+$TR(KMValues(i,"IN"),"<>='","") . If Val=KMValues(i,"IN") Set NumSort(Val)=$LB(i) . Else Set:('$D(NumSort(Val))) NumSort(Val)=$LB(i,"NX") ; Not eXact Set LBVals="" Set Val="" For Set Val=$O(NumSort(Val)) Quit:(Val="") Do . Set i=$LI(NumSort(Val),1) ; Index voor KMValues . If $LG(NumSort(Val),2)="NX" Do ; Niet-Exacte waarde (bvb. ">=30") omrekenen/vertalen naar "30" .. Set KMValues(i,"IN")=Val .. Set KMValues(i,"VT")=MetaObj.VertaalItem(Val,Taal,$$$TextType) . Set LBVals=LBVals_$LB(i) ; Lijst van alle te behouden indexen van KMValues ; De Niet-Exacte nodes uit KMValues verwijderen Set i="" For Set i=$O(KMValues(i)) Quit:(i="") Kill:('$LF(LBVals,i)) KMValues(i) Quit PRZoekAantal() ; Parameters: GroepID,LBText New ArPR Do ##class(cspBasis.ProductSearch).LBTextToArray($G(LBText),"CriteriaArray") ; temporary: ArAllPR zou slechts één maal moeten gecreëerd worden. Do:('$D(ArAllPR)) ##class(Prod.Kenmerk.DataIndex).SPAlle(GroepID,"ArAllPR") If $D(CriteriaArray)>1 Do ; CriteriaArray heeft subnodes . Kill ArPR . Merge ArPR=ArAllPR . Do ##class(cspBasis.ProductSearch).PRLijstSimple(GroepID,"ArPR",.CriteriaArray) ; CriteriaArray mag niet wijzigen ! Quit ##class(Prod.Kenmerk.DataIndex).SPCount($S($D(CriteriaArray)>1:"ArPR", 1:"ArAllPR")) LBTextToArray ; Parameters: LBText,Ref ; LBText moet zoals volgend formaat zijn: $LB($LB("SN1","ValA"),$LB("SN2","ValB"),$LB("SN3","ValC")) Kill @Ref Quit:($G(LBText)="") New LB,i,SN Xecute "Set LB="_LBText For i=1:1:$LL(LB) Do . Set SN=$LI($LI(LB,i),1) . Set NextNum=$O(@Ref@(SN,""),-1)+1 . Set @Ref@(SN,NextNum)=$LI($LI(LB,i),2) Quit PRLijstSimple ; Parameters: GroepID,Ref,CriteriaArray #define CVTBool(%v) (+%v'=0) Quit:('$D(CriteriaArray)) If ($D(CriteriaArray("UnID")))||($D(CriteriaArray("PRNr"))) Do ; UITBREIDING van de zoekfunctie is mogelijk! . ; Array van UnID opbouwen via opgegeven UnIDs/PRNrs . Do ##class(Prod.Kenmerk.Utils).PRLijstViaUnID(GroepID,Ref,.CriteriaArray) Else Do . ; Array van UnID's opbouwen via opgegeven Kenmerken . New ArKM,blnUndefs . Set blnUndefs=$$$CVTBool($G(CriteriaArray("IncludeUndefs",1))) . Merge ArKM=CriteriaArray . Do ##class(Prod.Kenmerk.Utils).FilterKenmerken(GroepID,.ArKM) . Do ##class(Prod.Kenmerk.Utils).PRLijstViaKenmerk(GroepID,Ref,.ArKM,blnUndefs) Quit