ControleAfm() ; Parameters: Toepassing,BeslagCode,Hoogte,Breedte,Gewicht,BeslagQty,OutputType Quit:('$G(Toepassing)) 0 Quit:(+$G(Hoogte)'>0) 0 Quit:(+$G(Breedte)'>0) 0 Quit:(Toepassing.ItemID="KD")&&(BeslagQty'>0) 1 New rs,ObjArray,BeperkAr,tmpObj,Cnt Kill ObjArray Set Cnt=0 Set rs=##class(%ResultSet).%New("Prod.GADef.BT.BeperkAfm:BeperkToepasBeslag") Do rs.Execute(Toepassing.%Id(),BeslagCode) For Quit:'rs.Next() Do . Set tmpObj=##class(Prod.GADef.BT.BeperkAfm).%OpenId(rs.Get("ID")) . Quit:('tmpObj) . Set ObjArray(rs.Get("ID"))=tmpObj . Set Cnt=Cnt+1 Do rs.%Close() Quit:(Cnt=0) 1 ; Geen Beperkingen voor Toepassing en BeslagCode. ; Else Merge BeperkAr=ObjArray New key,msg Set msg="" Do:(+$G(Gewicht)>0) cafBeperkGewicht Do cafBeperkHoogte Do cafBeperkBreedte Do:(+$G(BeslagQty)>0) cafBeperkBeslagQty Do cafCloseObjects Quit:($L($G(msg))) "0;"_msg Quit 1 cafBeperkGewicht #define FactG 1000 Quit:('$D(BeperkAr)) New tmpAr Set key="" For Set key=$O(BeperkAr(key)) Quit:(key="") Do . If $$cafIsBetween(Gewicht, BeperkAr(key).GewMin,BeperkAr(key).GewMax) Set tmpAr(key)=BeperkAr(key) If '$D(tmpAr) Do . ; Voor geen enkel object valt Gewicht binnen de grenzen ==> Min. en Max. bepalen van alle objecten in BeperkAr . New tmpMin,tmpMax . Set key="" . For Set key=$O(BeperkAr(key)) Quit:(key="") Do .. Do cafUpdateMinMax(.tmpMin,.tmpMax, BeperkAr(key).GewMin,BeperkAr(key).GewMax) . Do cafSetErrorMsg("Gewicht (in kg)",Gewicht/$$$FactG,tmpMin/$$$FactG,tmpMax/$$$FactG) Kill BeperkAr Merge:($D(tmpAr)) BeperkAr=tmpAr Quit cafBeperkHoogte Quit:('$D(BeperkAr)) New tmpAr Set key="" For Set key=$O(BeperkAr(key)) Quit:(key="") Do . If $$cafIsBetween(Hoogte, BeperkAr(key).H1,BeperkAr(key).H2) Set tmpAr(key)=BeperkAr(key) If '$D(tmpAr) Do . ; Voor geen enkel object valt Hoogte binnen de grenzen ==> Min. en Max. bepalen van alle objecten in BeperkAr . New tmpMin,tmpMax . Set key="" . For Set key=$O(BeperkAr(key)) Quit:(key="") Do .. Do cafUpdateMinMax(.tmpMin,.tmpMax, BeperkAr(key).H1,BeperkAr(key).H2) . Do cafSetErrorMsg("Hoogte",Hoogte,tmpMin,tmpMax) Kill BeperkAr Merge:($D(tmpAr)) BeperkAr=tmpAr Quit cafBeperkBreedte Quit:('$D(BeperkAr)) New tmpAr,IPLBreedteAr Set key="" For Set key=$O(BeperkAr(key)) Quit:(key="") Do . Set IPLBreedteAr(key,"Min")=$$cafInterpoleerBMin(BeperkAr(key)) . Set IPLBreedteAr(key,"Max")=$$cafInterpoleerBMax(BeperkAr(key)) . If $$cafIsBetween(Breedte, IPLBreedteAr(key,"Min"),IPLBreedteAr(key,"Max")) Set tmpAr(key)=BeperkAr(key) If '$D(tmpAr) Do . ; Voor geen enkel object valt Breedte binnen de grenzen ==> Min. en Max. bepalen van alle objecten in BeperkAr . New tmpMin,tmpMax . Set key="" . For Set key=$O(BeperkAr(key)) Quit:(key="") Do .. Do cafUpdateMinMax(.tmpMin,.tmpMax, IPLBreedteAr(key,"Min"),IPLBreedteAr(key,"Max")) . Do cafSetErrorMsg("Breedte",Breedte,tmpMin,tmpMax,$$cafPrefixHoogte) Kill BeperkAr Merge:($D(tmpAr)) BeperkAr=tmpAr Quit cafBeperkBeslagQty Quit:('$D(BeperkAr)) New tmpAr Set key="" For Set key=$O(BeperkAr(key)) Quit:(key="") Do . If $$cafIsBetween(BeslagQty, BeperkAr(key).BslQtyMin,BeperkAr(key).BslQtyMax) Set tmpAr(key)=BeperkAr(key) If '$D(tmpAr) Do . ; Voor geen enkel object valt BeslagQty binnen de grenzen ==> Min. en Max. bepalen van alle objecten in BeperkAr . New tmpMin,tmpMax . Set key="" . For Set key=$O(BeperkAr(key)) Quit:(key="") Do .. Do cafUpdateMinMax(.tmpMin,.tmpMax, BeperkAr(key).BslQtyMin,BeperkAr(key).BslQtyMax) . Do cafSetErrorMsg("Beslag Aantal",BeslagQty,tmpMin,tmpMax) Kill BeperkAr Merge:($D(tmpAr)) BeperkAr=tmpAr Quit cafIsBetween(Value,Min,Max) Quit:($G(Min)="")&&($G(Max)="") 1 Quit (Value'Max) cafUpdateMinMax(tmpMin,tmpMax,CurMin,CurMax) If $G(CurMin)'="" Set:('$D(tmpMin))||(CurMintmpMax) tmpMax=CurMax Quit cafInterpoleerBMin(obj) Quit $$cafInterpoleer(Hoogte,obj.H1,obj.H2,obj.BMin1,obj.BMin2) cafInterpoleerBMax(obj) Quit $$cafInterpoleer(Hoogte,obj.H1,obj.H2,obj.BMax1,obj.BMax2) cafInterpoleer(HUser,H1,H2,B1,B2) Quit:(H1=H2) $S(HUser=H1:B1, 1:"") Quit (B2-B1)*(HUser-H1)/(H2-H1) + B1 cafPrefixHoogte() #define NumDsp(%v) $TR(+$J(%v,0,2),".",",") Quit "Voor Hoogte="_$$$NumDsp(Hoogte)_" geldt:"_$C(13,10) cafSetErrorMsg(Label,Value,tmpMin,tmpMax,Prefix) #define NumDsp(%v) $TR(+$J(%v,0,2),".",",") If OutputType="LOGOPM" Do . Set msg=""""_Label_""" bevat een ongewone waarde ("_$$$NumDsp(Value)_"). Deze is niet volgens de normen. - € -" Else Do . Set msg=$G(Prefix)_""""_Label_""" bevat een ongeldige waarde ("_$$$NumDsp(Value)_")."_$C(13,10) . If tmpMin=tmpMax Set msg=msg_""""_Label_""" moet gelijk zijn aan "_$$$NumDsp(tmpMin)_"." . Else Set msg=msg_""""_Label_""" moet liggen tussen de grenzen "_$$$NumDsp(tmpMin)_" - "_$$$NumDsp(tmpMax)_"." Quit cafCloseObjects ; Alle geopende Objecten sluiten New ObjID Set ObjID="" For Set ObjID=$O(ObjArray(ObjID)) Quit:(ObjID="") Do . Set tmpObj=$G(ObjArray(ObjID)) . Do:(tmpObj) tmpObj.%Close() Kill ObjArray Quit