Index: Prod/GAMeta/Item/tmpDev.mac.rou =================================================================== diff -u --- Prod/GAMeta/Item/tmpDev.mac.rou (revision 0) +++ Prod/GAMeta/Item/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,328 @@ +#include %VHMacro + + + ; w $$PRGetProductViaKenm^Prod.GAMeta.Item.tmpDev ; (KenmGrp,Kenm,DItem) +PRGetProductViaKenm() ; Parameters: KenmGrp,Kenm,DItem + ;Quit "" + ;Quit 87944 + New KLNr,lbPRNr + Set:('$D(DItem)) DItem=Self + Set:('$D(KenmGrp)) KenmGrp=DItem.Get("KenmGrp") + Set:('$D(Kenm)) Kenm=DItem.Get("Kenm") + Set KLNr=$S($D(tmpKLNr):tmpKLNr, 1:DItem.Product.KlantGetObjectId()) + Set lbPRNr=$$PRGetProductViaKenmerkLijst(KenmGrp,Kenm,KLNr) + Quit $S($LL(lbPRNr)>1:"(MP)"_$$ListToDelimited^vhLib(lbPRNr,"\"), 1:$LG(lbPRNr,1)) + +PRGetProductViaKenmerkLijst(KenmGrp,Kenm,KLNr) +#define CompTypeDFL "E" +#define KenmCombine "$COMB$" + s %blnDEBUG=$G(%blnDEBUG,0) + New ArPR,ArKenmAll,ArKenm,i,CompType,lbKenmItem,PRNr,lbPRNr,Step,iKenm,tmpCopyArPR,Val + // Opbouwen van de Kenmerk-arrays + For i=2:1:$LL(Kenm) Do ; Beginnen bij tweede list-item, want eerste Kenm wordt gebruikt als startwaarde bij het opbouwen van SPAlle() array + . Set lbKenmItem=$LI(Kenm,i) + . Quit:($LG(lbKenmItem,1)="") + . If $LI(lbKenmItem,1)=$$$KenmCombine Do + . . Set CompType="-" + . . Set Step="Step3" + . Else If ($LG(lbKenmItem,3)="")||($LG(lbKenmItem,3)=$$$CompTypeDFL) Do + . . Set CompType=$$$CompTypeDFL + . . Set Step="Step1" + . Else Do + . . Set CompType=$LG(lbKenmItem,3) + . . Set Step="Step2" + . Set ArKenmAll(Step,CompType,$LI(lbKenmItem,1))=$LI(lbKenmItem,2) + Set ArKenmAll("Step4a","E","Actief")=$G(KLNr) ; Beperken op het kenmerk "Actief" (is niet altijd nodig) + Set ArKenmAll("Step4b","E","Actief")="A" + d:(%blnDEBUG) WL^vhDBG($$$CRLF_"KenmGrp:"_KenmGrp_$C(13,10)_"ArKenmAll:"_$$ArrayToText^vhLib("ArKenmAll")) + + // Lijst beperken via Exacte match (eerste kenmerk gebruiken als startwaarde): + Merge ArKenm=ArKenmAll("Step1","E") + Do gpnPRLijstViaKenmerk(KenmGrp,"ArPR",.ArKenm,0 ,$LG($LG(Kenm,1),1),$LG($LG(Kenm,1),2)) + Kill ArKenm + + // Lijst verder beperken via multiple: + Merge ArKenm=ArKenmAll("Step2") + Merge ArKenm=ArKenmAll("Step3") + Do:($D(ArKenm)) gpnPRLijstViaKenmerkMulti(KenmGrp,"ArPR",.ArKenm) + Kill ArKenm + + // Als meer dan ��n product overgehouden, dan verder beperken via het kenmerk "Actief" --> het juiste product zoeken + If $L($O(ArPR($O(ArPR(""))))) Do + . d:(%blnDEBUG) WL^vhDBG("VOOR:"_$$ArrayToText^vhLib("ArPR")) + . Merge tmpCopyArPR=ArPR + . // Eerst beperken via "Actief Klant" + . Merge ArKenm=ArKenmAll("Step4a","E") + . Do gpnPRLijstViaKenmerk(KenmGrp,"ArPR",.ArKenm,0) + . Kill ArKenm + . d:(%blnDEBUG) WL^vhDBG("NA klant:"_$$ArrayToText^vhLib("ArPR")) + . // Indien geen product over na beperking via "Actief Klant", dan beperk via "Actief Alle" + . If $O(ArPR(""))="" Do + . . Merge ArPR=tmpCopyArPR ; Reset ArPR array from tmpCopy + . . Merge ArKenm=ArKenmAll("Step4b","E") + . . Do gpnPRLijstViaKenmerk(KenmGrp,"ArPR",.ArKenm,0) + . . Kill ArKenm + . . d:(%blnDEBUG) WL^vhDBG("NA ALLE:"_$$ArrayToText^vhLib("ArPR")) + + // Convert Array-index to LB + Set (PRNr,lbPRNr)="" + For Set PRNr=$O(ArPR(PRNr)) Quit:(PRNr="") Set lbPRNr=lbPRNr_$LB(PRNr) + + // Controle kenmerkwaarde "Actief" + If $LL(lbPRNr)=1 Do + . Set PRNr=$LI(lbPRNr,1) + . Set Val=##class(Prod.Kenmerk.DataDefinitie).Get(KenmGrp,PRNr,"Actief") + . If ($LF(Val,"A")=0)&&($LF(Val,KLNr)=0) Set lbPRNr="" ; Product is not valid for this KLNr --> clear lbPRNr ! + + Quit lbPRNr + +gpnPRLijstViaKenmerk(GroepID,Ref,KenmerkArray,IncludeUndefs,StartKenm,StartWaarde) + New Kenm,i,objKenm + ; Array opbouwen van alle producten, eventueel met startwaarde + Do:('$D(@Ref)) ##class(Prod.Kenmerk.DataIndex).SPAlle(GroepID,Ref,$G(StartKenm),$G(StartWaarde)) + ; Array beperken voor ieder kenmerk van KenmerkArray + Set Kenm="" + For Set Kenm=$O(KenmerkArray(Kenm)) Quit:(Kenm="") Do + . Set objKenm=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_Kenm) + . ; - Beperking op waarde van de subnodes + . Set i="" + . For Set i=$O(KenmerkArray(Kenm,i)) Quit:(i="") Do gpnBeperk(KenmerkArray(Kenm,i)) + . ; - Beperking op waarde van node (Kenm) + . If ($$$aHasData(KenmerkArray(Kenm))) Do gpnBeperk(KenmerkArray(Kenm)) + . Do:(objKenm) objKenm.%Close() + Quit +gpnBeperk(KWaarde) + Do ##class(Prod.Kenmerk.DataIndex).SPBeperkExcl(GroepID,Kenm,KWaarde,Ref) + Quit + +gpnPRLijstViaKenmerkMulti(GroepID,Ref,KenmerkArray) + ; Loop through different types of MultiSelect/Beperk + Quit:('$D(@Ref)) + New Kenm,i,objKenm,CompType,tmpAr + ; CompareType special (GN, KN, BN, L), All Kenm except $COMB$ + Set (CompType,Kenm)="" + For Set CompType=$O(KenmerkArray(CompType)) Quit:(CompType="") Do + . For Set Kenm=$O(KenmerkArray(CompType,Kenm)) Quit:(Kenm="") Do:(Kenm'=$$$KenmCombine) + . . Set objKenm=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_Kenm) + . . Do:($L($G(KenmerkArray(CompType,Kenm)))) gpnBeperkMulti(Kenm,KenmerkArray(CompType,Kenm),CompType) + . . Set objKenm="" + ; Kenm=$COMB$ + Set Kenm=$$$KenmCombine + For Set CompType=$O(KenmerkArray(CompType)) Quit:(CompType="") Do + . Do:($L($G(KenmerkArray(CompType,Kenm)))) gpnBeperkMulti(Kenm,KenmerkArray(CompType,Kenm),CompType) + Quit +gpnBeperkMulti(Kenmerk, WaardeInput, CompType) + Do ##class(Prod.Kenmerk.DataIndex).SPBeperkMulti(.GroepID,.Kenmerk,WaardeInput,.Ref,.CompType) + Quit + + + + ;Oproepen via: Do ##class(Prod.Kenmerk.DataIndex).SPBeperkMulti(Groep,Kenmerk,WaardeInput,Ref,CompareType) +xxSPBeperkMulti(Groep,Kenmerk,WaardeInput,Ref,CompareType) +xSPBeperkMulti + Quit:($G(Kenmerk)="") + If $G(WaardeInput)="" Kill @Ref Quit + New PRNr,KenmID,indexID,lbWaarden,i,blnCrit + Set KenmID="||"_Groep_"||"_Kenmerk + If Kenmerk=$$$KenmCombine Do + . // Beperk via KenmCombine + . New FCombi,j,iKM,lbKenm,arWdn,arFC,arFCX,lbCVal,Kenm,eval,tmpAr,m,k + . Set FCombi=WaardeInput + . Set lbKenm=$$bpmCombiGetKenm + . // Transform FCombi to an Execute-string: replace each {kenm} by $LI(lbCVal,j) which will evaluate to the value of the Kenm in the calculation of $$$COMB$$$ + . For j=1:1:$LL(lbKenm) Do + . . Set KenmID(j)="||"_Groep_"||"_$LG(lbKenm,j) + . . Set FCombi=$$$Replace(FCombi,"{"_$LG(lbKenm,j)_"}","($LI(lbCVal,"_j_"))") + . Set FCombi="Set eval="_FCombi ; transform FCombi to an eval-expression + . + . // Loop through array @Ref@(PRNr) to calculate the FCombi-expression for each PR + . Kill arFCX + . Set PRNr="" + . For Set PRNr=$O(@Ref@(PRNr)) Quit:(PRNr="") Do + . . Do bpmCalcCombiValues + . Set LowestVal=$O(arFCX("")) + . Quit:(LowestVal="") + . Set PRNr="" + . For Set PRNr=$O(@Ref@(PRNr)) Quit:(PRNr="") Kill:('$D(arFCX(LowestVal,PRNr))) @Ref@(PRNr) + Else Do + . // Beperking via Kenmerk volgens CompareType + . Set PRNr="" + . For Set PRNr=$O(@Ref@(PRNr)) Quit:(PRNr="") Kill:('$$bpmMatchCriteria) @Ref@(PRNr) + Quit +bpmCombiGetKenm() + Quit:($F(FCombi,"{")=0) "" + New tmpLB,p,q,km + Set tmpLB="" + Set (p,q)=0 + For Set p=$F(FCombi,"{",p) Quit:(p=0) Do + . Set q=q+1 + . Set km=$P($P(FCombi,"{",q+1),"}") + . Set:($L($$$Trim(km))&&('$LF(tmpLB,km))) tmpLB=tmpLB_$LB(km) + Quit tmpLB +bpmCalcCombiValues + ; apply FCombi-function to all values from lbWaarden + Kill arWdn,arFC + Set arFC(1)="" + For j=1:1:$LL(lbKenm) Do + . Set arWdn(j)=$$bpmGetKemnWaarden(PRNr,Groep,$P(KenmID(j),"||",3)) ;w "km:"_j_" "_$LG(lbKenm,j)_" --> Wdn="_$$$LCVT(arWdn(j)),! + . Kill tmpAr + . Merge:($LL(arWdn(j))>1) tmpAr=arFC + . ; In de eerste reeks uitbreiden met j-de kenmerk waarden + . Set k="" + . For Set k=$O(arFC(k)) Quit:(k="") Set $LI(arFC(k),j)=$LG(arWdn(j),1) + . If $LL(arWdn(j))>1 Do + . . For m=2:1:$LL(arWdn(j)) Do + . . . Set k="" + . . . For Set k=$O(tmpAr(k)) Quit:(k="") Set arFC($O(arFC(""),-1)+1)=tmpAr(k)_$LB($LG(arWdn(j),m)) ; Set $LI(arFC(k),j)=$LG(arWdn(j),m) + ; arFC(j) : elke node bevat een $LB(Kenm1_Waarde, Kenm2_Waarde, ...) + Quit:(arFC(1)="") ; Geen kenmerk/waarden aanwezig! + Set j="" + For Set j=$O(arFC(j)) Quit:(j="") Do + . Set lbCVal=$G(arFC(j)) + . Set eval="" + . Xecute FCombi + . Set:($L(eval)) arFCX(eval,PRNr)="" + . ;Set:($L(eval)) arFCX(eval,PRNr,"TST")=arFC(j) + Quit +bpmGetKemnWaarden(UnID,Groep,Kenm) + ;Quit $$bpmGetKemnWaardenOLD(UnID_"||"_Groep_"||"_Kenm) + Quit:(UnID_Kenm="") "" + Quit ##class(Prod.Kenmerk.DataDefinitie).Get(Groep,UnID,Kenm) +bpmGetKemnWaardenOLD(iID) + Quit:(iID="") "" + New lbWaarden + ; &SQL(SELECT Waarden INTO :lbWaarden FROM Prod_Kenmerk.DataDefinitie WHERE ID = :iID) + Quit $G(lbWaarden) +bpmMatchCriteria() + + Set lbWaarden=$$bpmGetKemnWaarden(PRNr,$P(KenmID,"||",2),$P(KenmID,"||",3)) ; --> iID = 10560||TB||DraagKracht + + Quit:(lbWaarden="") $G(%OrgaluxIncludeUndefs,0) ; Modified by WimV on 06/09/2010 + Set blnCrit=0 + Do @("bpmMatchCriteria"_CompareType) + Quit blnCrit + Quit ; 0 / 1 +bpmMatchCriteriaGN ; Groter dan (of gelijk aan) --> Numeriek + If $LF(lbWaarden,WaardeInput)>0 Set blnCrit=1 Quit + For i=1:1:$LL(lbWaarden) Set:($LG(lbWaarden,i)>WaardeInput) blnCrit=1 + Quit +bpmMatchCriteriaKN ; Kleiner dan (of gelijk aan) --> Numeriek + If $LF(lbWaarden,WaardeInput)>0 Set blnCrit=1 Quit + For i=1:1:$LL(lbWaarden) Set:($LG(lbWaarden,i) Numeriek + New Min,Max + Set Min=$LG(lbWaarden,1) + Set Max=$LG(lbWaarden,2) + Quit:(Min="")||(Max="") + If Min>Max Do + . Set Min=$LG(lbWaarden,2) + . Set Max=$LG(lbWaarden,1) + Set blnCrit=(WaardeInput'Max) + Quit +bpmMatchCriteriaL ; Lijst bevat waarde + For i=1:1:$LL(lbWaarden) Set:($F(WaardeInput,$LG(lbWaarden,i))>0) blnCrit=1 + Quit +bpmMatchCriteriaE ; Exacte match + For i=1:1:$LL(lbWaarden) Set:($LG(lbWaarden,i)=WaardeInput) blnCrit=1 + Quit + + + // !!! Test routine to call directly from Terminal !!! + // this is not used by the normal flow of the algoritme! +bpmCalcCombiValuesX(FCombi,PRNr) ; d bpmCalcCombiValuesX^Prod.GAMeta.Item.tmpDev(fc,PRNr) + Do bpmCalcCombiValues + Quit + + // !!! Test routine to call directly from Terminal !!! + // this is not used by the normal flow of the algoritme! +bpmCombineGetKenmX(FCombi) ; s lb=$$bpmCombineGetKenmX^Prod.GAMeta.Item.tmpDev(fc) w $$LCVT^vhLib(lb) + Set lbKenm=$$bpmCombiGetKenm + For j=1:1:$LL(lbKenm) Do + . Set KenmID(j)="||"_Groep_"||"_$LG(lbKenm,j) + . Set FCombi=$$$Replace(FCombi,"{"_$LG(lbKenm,j)_"}","($LI(lbCVal,"_j_"))") + Set FCombi="Set eval="_FCombi + Quit lbKenm + + + /* + // Copy these lines into the Cach� Terminal to test the "GetProductViaKenm()" method. + +s ClientIP="192.168.1.97" +s KenmGrp="TB" +Set Self="" +Set tmpKLNr="" +Set Kenm=$LB($LB("BasisType","LA"),$LB("tB",1),$LB("LiRe","LI"),$LB("Design","S"),$LB("Verpakking","I"),$LB("LadeDiepte",500),$LB("Kleur","MG"),$LB("DraagKracht",50),$LB("ZijwandHoogte","M")) +For i=1:1:$LL(Kenm) Set arKM($LI($LI(Kenm,i),1))=$LI($LI(Kenm,i),2) +zw arKM +m arKM2=arKM +s (Kenm,KM)="" f s KM=$O(arKM(KM)) q:KM="" s Kenm=Kenm_$LB($LB(KM,arKM(KM))) +w $$LCVT^vhLib(Kenm) + +Set MItem=##class(Prod.GAMeta.ItemPR).%New() +s PRNrs=MItem.GetProductViaKenm(KenmGrp,Kenm) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2) +w:($L(PRNr)) $$ArrayToText^vhLib($Na(^Prod.Ken.DataDefinitieD(PRNr))) +s pKenm="TB||Kleur" + +s $LI(Kenm,4,4)="" +s $LI(Kenm,3,3)="" +s PRNrs=MItem.GetProductViaKenm(KenmGrp,Kenm) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2) +f i=1:1:$L(pl,"\") w:($L($G(pKenm))) $$ArrayToText^vhLib($Na(^Prod.Ken.DataDefinitieD($P(pl,"\",i),pKenm))),! + +r fc2 +($CASE({Kleur}, "MG":1, "WI":2,"IN":3, :5)*10000)+{DraagKracht} +s CombCrit=$LB("$COMB$", fc2) +s Kenm=Kenm_$LB(CombCrit) +s PRNrs=MItem.GetProductViaKenm(KenmGrp,Kenm) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2) +s $LI(Kenm,7,7)=$LB($LI(Kenm,7),$LB("DraagKracht",28,"GN")) + + + + + +Code for new implementation of GAData (feb-2008) + +s ClientIP="192.168.1.97" +s KenmGrp="TB" +Set Self="" +Set tmpKLNr="" +Set Kenm=$LB($LB("BasisType","LA"),$LB("tB",1),$LB("LiRe","LI"),$LB("Design","S"),$LB("Verpakking","I"),$LB("LadeDiepte",500),$LB("Kleur","MG"),$LB("DraagKracht",50),$LB("ZijwandHoogte","M")) +For i=1:1:$LL(Kenm) Set arKM($LI($LI(Kenm,i),1))=$LI($LI(Kenm,i),2) +zw arKM +m arKM2=arKM +s (Kenm,KM)="" f s KM=$O(arKM(KM)) q:KM="" s Kenm=Kenm_$LB($LB(KM,arKM(KM))) +w $$LCVT^vhLib(Kenm) + +Set MItem=##class(BL.Prod.GAData.TBXLadeBuild).%New() +s PRNrs=MItem.ProductViaKenmerkLijst(Kenm,KenmGrp) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2) +w:($L(PRNr)) $$ArrayToText^vhLib($Na(^Prod.Ken.DataDefinitieD(PRNr))) +s pKenm="TB||Kleur" + +s $LI(Kenm,4,4)="" +s $LI(Kenm,3,3)="" +s PRNrs=MItem.ProductViaKenmerkLijst(Kenm,KenmGrp) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2) +f i=1:1:$L(pl,"\") w:($L($G(pKenm))) $$ArrayToText^vhLib($Na(^Prod.Ken.DataDefinitieD($P(pl,"\",i),pKenm))),! + +r fc2 +($CASE({Kleur}, "MG":1, "WI":2,"IN":3, :5)*10000)+{DraagKracht} +s CombCrit=$LB("$COMB$", fc2) +s Kenm=Kenm_$LB(CombCrit) +s PRNrs=MItem.ProductViaKenmerkLijst(Kenm,KenmGrp) w PRNrs s PRNr=$RE($P($RE($P(PRNrs,"\",1)),")PM(",1)) s pl=$P(PRNrs,"(MP)",2) +s $LI(Kenm,7,7)=$LB($LI(Kenm,7),$LB("DraagKracht",28,"GN")) + + + + + */ + + + /* + // Copy these lines into the Cach� Terminal to test the "xxSPBeperkMulti()" method with $$$KenmCombine. +s Groep="TB" +r fc2 +($CASE({Kleur}, "MG":1, "WI":2,"Ix":3, :4)*10000)+{LadeDiepte} +s fc=fc2 +s lb=$$bpmCombineGetKenmX^Prod.GAMeta.Item.tmpDev(.fc) w $$LCVT^vhLib(lb) +k arFCX d bpmCalcCombiValuesX^Prod.GAMeta.Item.tmpDev(fc,30786) zw arFCX + */ + \ No newline at end of file Index: Prod/GADef/KaderDeur/KostPrijs.mac.rou =================================================================== diff -u --- Prod/GADef/KaderDeur/KostPrijs.mac.rou (revision 0) +++ Prod/GADef/KaderDeur/KostPrijs.mac.rou (revision 1152) @@ -0,0 +1,592 @@ +#include %occInclude +#include %VHMacro + + /* + Kill ; Compiled March 14, 2001 17:22:49 + Do KillAllObjects^%apiOBJ() + Set Obj=##class(Prod.GADef.KaderDeur).%OpenId(40000) + Write Obj.KostPrijs(1,,1) + ;Do Obj.DisplayPrijsDtl() + Set CalcObj=##class(Prod.GADef.KadPrijs).%New() + Set Prijs=$$CALC(Obj,10,CalcObj) + Write !,"Prijs = ",Prijs,! + Quit +TEST + Set Prof="P02-EV" + Set Vul="" + Set VulExtra="" + Set Hoogte=1193 + Set Breedte=399 + Set CharType="HETS" + Set CharQty=0 + Set VulBor=0 + Set P1Bor=0 + Set P2Bor=0 + Set P3Bor=0 + Set IsMont="" + Set IsMont="" + Set ProfKost=500 + Set VulKost=2000 + Set caObj=##class(Prod.GADef.KaderDeur).%New() + Do caObj.FillObjectViaParam(Prof,Hoogte,Breedte,CharType,CharQty,VulBor,P1Bor,P2Bor,P3Bor,Vul,VulExtra,IsMont,"",ProfKost,VulKost) + Do caObj.%Save() + Set Prijs=caObj.KostPrijs(1,"",1) + Write caObj.%Id(),"->",Prijs + ;Do caObj.%Close() + Quit + */ + + +CALC(%this,Staffel,CalcObj,blnGADataSchaduw) + s %ClientIP=$G(%ClientIP,"192.168.1.97") + New KPrijs + Set $ZTRAP="cgpCalcError" + Set KPrijs=$$CALCviaGADataProduct(%this,.Staffel,.CalcObj,.blnGADataSchaduw) ; =$$CalcKostPrijsNew^Prod.GADef.KaderDeur.tmpDev(%this,.Staffel,.CalcObj,.blnGADataSchaduw) + d WL^vhDBG("CALCviaGADataProduct : "_KPrijs_" EUR") + Set $ZTRAP="" + Quit KPrijs +cgpCalcError + Set Err=$ZE + Set $ZTRAP="" + Set msg="KostPrijsCalc Error : "_$$$CRLF_Err ; $$ParseStatus^vhLib(Err) + d WLIP^vhDBG(97,"Error KAD KPCalc New - "_$G(KadID)_" - %NoSa : "_$G(%NoSa)) + d WLIP^vhDBG(97,msg) + Set $ZE="" + Quit "" + + // ===================================================================================================== + // CALCviaGADataProduct : + // -------------------- + // Creatie: juni 2006 + // Routine omgeschakeld van CALCviaResPiKost() op 01/09/2006 door WimV. + // De omschakeling ging gepaard verandering van munteenheid (EUR ipv. BEF) in de kostdetails, en ging + // eveneens gepaard met een algemene prijsverhoging bij VanHoecke/Halux. + // ===================================================================================================== +CALCviaGADataProduct(%this,Staffel,CalcObj,blnGADataSchaduw) +#define KADBasis "KADBasis" + New KadObj,Prod,arValidPR,KPrijs,arKDtls,BEF2EUR + Set KadObj=%this + ;Set BldDtl=($IsObject($G(CalcObj))) + Do tnbInitGADataProd + Quit:('$IsObject(Prod)) "" + If $G(%DtlRecalcOnly)'=1 Do + . Do Prod.KlantSetObjectId($G(KLNr)) + . Do Prod.TemplateTmpInit() + . Do Prod.AutosFromTemplate(,"FILL") + . Do tnbValuesToProduct + Do Prod.CalcAll() + Kill %KadObj + New modbit,sc + Set modbit=KadObj.%IsModified() + Set KadObj.GADataProduct=Prod + Set sc=KadObj.%SetModified(modbit) + Set:($IsObject($G(CalcObj))) CalcObj.DetailGAData=Prod + If 'Prod.ValidatePR(.arValidPR) Do + . Do tnbInvalidPR + . Set KPrijs="" + Else Do + . Set KPrijs=+$J($G(Prod.Cumuls("KPrijs")),0,2) + Quit KPrijs ; $J(KPrijs,0,2) +tnbInitGADataProd + // Initialize GAData Product: + // 1 - reference from KadObj if available; + // 2 - reference from CalcObj (saved) if available; + // 3 - create new object + New TemplateID + Set Prod=KadObj.GADataProduct + Set:('$IsObject(Prod)) Prod=$S($IsObject($G(CalcObj)):CalcObj.DetailGAData, 1:"") + If $IsObject(Prod) Do + . Quit:($G(%DtlRecalcOnly)=1) + . Do Prod.ClearAllData() ; Reset all DataItems, KostItems, Lookups, Cumuls, arTree + . Do Prod.TemplateTmpInit() + . Do Prod.CopyItemsFromProduct(Prod.TemplateTmp.Product,"NotProd&Kost") + . ;d WLIP^vhDBG(97," Build from prev obj") + Else Do + . Set TemplateID=$LG(##class(Prod.GAData.Template).IDsViaCode($$$KADBasis),1) + . Set Prod=##class(Prod.GAData.Product).BuildFromTemplate(TemplateID,blnGADataSchaduw) + . ;d WLIP^vhDBG(97," Build_FromTemplate : Prod version ="_Prod.TemplateVersion_" (TemplateID:"_TemplateID_") blnGADataSchaduw="_blnGADataSchaduw) + Quit +tnbInvalidPR + d WLIP^vhDBG(97,"KAD KPCalc New - "_$G(KadID,%this.%Id())_" - %NoSa : "_$G(%NoSa)_" Staffel: "_Staffel) + New msg + Set msg=Prod.ValidPRArrayToText(.arValidPR) + ;Do MApplication.MessageBox(msg,"Producten valideren",$$$MBICONEXCLAMATION) + d WL^vhDBG(msg) + Quit +tnbValuesToProduct + Do:('$D(Prod.LookUp("PLItem"))) Prod.BuildLookUp($LB("ICode")) ; "PLItem" is onderdeel van BuildLU("ICode") + Do tnbSetViaObj(KadObj) + Do tnbSetViaProgLabel("QTY",Staffel) + Set sc=$$tnbSetDItemKadObj(KadObj) + Do Prod.BuildLookUp($LB("PL")) + Quit +tnbSetViaObj(KadObj) + Do tnbSetViaProgLabel("TOEP",KadObj.Toepassing.ItemID) + Do tnbSetViaProgLabel("PH",KadObj.Hoogte) + Do tnbSetViaProgLabel("PB",KadObj.Breedte) + Do tnbSetViaProgLabel("PT",KadObj.ProfType.ItemID) + Do tnbSetViaProgLabel("PA",KadObj.ProfAfw.ItemID) + If $IsObject(KadObj.Vulling.Vulling) Do + . Do tnbSetViaProgLabel("VULCODE",KadObj.Vulling.Vulling.ItemID) + . Do tnbSetViaProgLabel("LVE",$$tnbListVullingExtras()) + . Do tnbSetViaProgLabel("VULOPP",KadObj.VulOpp()) + . Do tnbSetViaProgLabel("VULOMTREK",KadObj.VulOmtrek()) + Do tnbSetViaProgLabel("OPH",KadObj.OphangPlaats.ItemID) + Do tnbSetViaProgLabel("LBSL","") + Do tnbSetViaProgLabel("LBSL2","") + Do tnbSetViaProgLabel("LBOR","") + Do tnbSetViaProgLabel("MON",KadObj.Gemonteerd) + Do tnbSetViaProgLabel("VPK",KadObj.Verpakking) + Do tnbSetViaProgLabel("DOSNR",KadObj.Dossier) + Set BEF2EUR=1 ; 1/40.3399 + Do tnbSetViaProgLabel("PROFKS",KadObj.ProfAfwKostSpecial*BEF2EUR) + Do tnbSetViaProgLabel("VULKS",KadObj.VullingKostSpecial*BEF2EUR) + Do tnbSetViaProgLabel("CONSKS",KadObj.ConstructKostSpecial*BEF2EUR) + Do tnbSetViaProgLabel("GEWICHT",KadObj.Gewicht()) + Do tnbSetViaProgLabel("PWIJZE",$S(1:KadObj.ProductieWijzeGetObjectId(), ..cboLosProfDeel.ItemIndex>-1:"LPR", 1:"")) + Do tnbSetViaProgLabel("ODEEL",$$ObjectListToLB^vhLib(KadObj.Onderdelen)) + Quit +tnbListVullingExtras() + Quit:('$IsObject(KadObj.Vulling)) + New Key,VE,tmpLB + Set (tmpLB,Key)="" + For Set VE=KadObj.Vulling.VullingExtra.GetNext(.Key) Quit:(Key="") Set tmpLB=tmpLB_$LB(VE.ItemID) + Quit tmpLB +tnbSetViaProgLabel(ProgLabel,Val) + Do Prod.SetItemValByPL(ProgLabel,Val) + Quit +tnbSetDItemKadObj(KadObj) +#define NodePLItem "PLItem" + New Item,ProgLabel + Set ProgLabel="KADOBJ" + Set Item=$G(Prod.LookUp($$$NodePLItem,ProgLabel,"IOref")) + Quit:('$IsObject(Item)) $$$ERROR($$$GeneralError,"No Item Object") + Set Item.FixedKeys=$LB("Object") ; Temporary set key fixed, else it will be cleared before Re-CalcAll() + Quit Item.SetObject(KadObj) + Quit $$$OK + + + // ===================================================================================================== + // CALCviaResPiKost : + // ---------------- + // Creatie: maart 2001 + // Routine omgeschakeld naar CALCviaGADataProduct() op 01/09/2006 door WimV + // De omschakeling ging gepaard verandering van munteenheid (EUR ipv. BEF) in de kostdetails, en ging + // eveneens gepaard met een algemene prijsverhoging bij VanHoecke/Halux. + // ===================================================================================================== + +CALCviaResPiKost(%this,Staffel,CalcObj) + New Muntpar,DtlObj,Tel,Hoogte,Breedte,Omtrek,Opp,Volume,VulHoogte,VulBreedte,VulOmtrek,VulOpp,VulVolume,KaliberQty,ProfLengte,Toepas + New ProfUitval,ProfUitvalFaktor,DichtUitval,DichtUitvalFaktor,QtyGlasBoor,ProfQtyProf,TelVul,TelProf,Prijs,GAObj,IsMont,GlasProf,VolgNr + New IsLosProf,LosProfPlaats,LosProfLengte,LosProfHalf,LosProfKwart,KaliberPQty,KaliberNew,IsKleef + Set GAObj=%this + d WL^vhDBG("CALCviaResPiKost ") + d WL^vhDBG("CALCviaResPiKost Aborted !!!") + Quit 99999.99 + /* + Do INIT + ;Do DEBUG^%Serenji("LabelDebug+1^"_$zn,"192.168.1.97") ; IP van WV_W2K + ;LabelDebug + Set Prijs=0 + If Toepas="GL" Do + . Set Prijs=Prijs+$$VULLING() + . Set Prijs=Prijs+$$VERPAK() + Else Do + . Set Prijs=Prijs+$$GOEDEREN() + . Set:('IsLosProf) Prijs=Prijs+$$VULLING() + . Set Prijs=Prijs+$$CAD() + . Set Prijs=Prijs+$$GEREI() + . If IsLosProf Set Prijs=Prijs+$$ZAAG(LosProfLengte) + . Else Do + .. Set Prijs=Prijs+$$ZAAG(Hoogte) + .. Set Prijs=Prijs+$$ZAAG(Breedte) + . Set Prijs=Prijs+$$FREES() + . Set Prijs=Prijs+$$BOOR() + . Set Prijs=Prijs+$$DICHTING() + . Set Prijs=Prijs+$$MONTEER() + . Set Prijs=Prijs+$$CONTROLE() + . Set Prijs=Prijs+$$VERPAK() + Quit $J(Prijs,0,2) ; Activeren wanneer de Dtl-prijzen in EUR worden gebruikt + ;Quit Prijs +INIT + Set GlobRef=$NA(^ResItemsD(4)), GlobDef=4 + Set BEF2EUR=1 ; /40.3399 + ; *** + ; *** al volgende locals worden gebruikt voor de kostprijs calculatie : MultiplicantEval en ReductieEval + ; *** + Set IsLosProf=(%this.ProductieWijzeGetObjectId()="LPR") + Set:(IsLosProf) LosProfPlaats=..Onderdelen.GetNext("") ; mogelijke waarde: "PL", "PR", "PB", "PO" + Set:(IsLosProf) LosProfLengte=..LosProfLengte(LosProfPlaats)/1000 + + Set LosProfHalf=$S(IsLosProf:0.5, 1:1) + Set LosProfKwart=$S(IsLosProf:0.25, 1:1) ; =LosProfHalf*LosProfHalf + Set GemCom=3 ; Gemiddelde commisiegrootte + Set Staffel=$G(Staffel,1) + Set:Staffel<0 Staffel=-Staffel ; absolute waarde + Set Staffel=$S(Staffel<10:1,Staffel>50:Staffel,1:Staffel\10*10) ;Staffel tussen 1 en 50 in stappen van 10 + Set Hoogte=%this.Hoogte/1000 + Set Breedte=%this.Breedte/1000 + Set Omtrek=%this.KadOmtrek() ; in meters + Set Opp=%this.KadOpp() + ;Set Volume=%this.KadVolume() + Set VulHoogte=%this.VulHoogte()/1000 + Set VulBreedte=%this.VulBreedte()/1000 + Set VulOmtrek=%this.VulOmtrek() ; in meters + Set VulOpp=%this.VulOpp() + ;Set VulVolume=%this.VulVolume() + Set ProfLengte=%this.ProfAfw.Lengte Set:'ProfLengte ProfLengte=3 + Set ProfUitval=%this.ProfType.ProfUitval/1000 + Set ProfUitvalFaktor=1+%this.ProfType.ProfUitvalPerc + Set DichtUitval=%this.ProfType.DichtUitval/1000 + Set DichtUitvalFaktor=1+%this.ProfType.DichtUitvalPerc + Set KaliberQty=%this.ProfType.KaliberAantal Set:KaliberQty KaliberQty=250\(%this.ProfType.Breedte+10) + Set GlasProf=($E(%this.ProfType.ItemID,3)="G")!($E(%this.ProfType.ItemID,3)="K") + Set IsKleef=$E(%this.ProfType.ItemID,3)="K" ; gekleefd + Set IsMont=%this.Gemonteerd["K" + Set Toepas=%this.Toepassing.ItemID + Do %this.TelBoringen(.TelProf,.TelVul) + ;zw TelProf + ;zw TelVul + Set VolgNr=0 + ;zw TelProf + Quit +GOEDEREN() + New Prijs + If %this.ProfAfwKostSpecial Do + . Set Prijs=$$KOST(%this.ProfAfw.ItemID,,%this.ProfAfwKostSpecial*BEF2EUR) + Else Do + . Set Prijs=$$KOST(%this.ProfAfw.ItemID) + Set Prijs=Prijs+$$KOST(%this.ProfType.DichtingKostCode) + Set:('IsLosProf)&&$L(%this.ProfType.Hoek) Prijs=Prijs+$$KOST(%this.ProfType.Hoek.SchroefKostCode) + Set:('IsLosProf)&&$L(%this.ProfType.Hoek) Prijs=Prijs+$$KOST(%this.ProfType.Hoek.HoekKostCode) + Quit Prijs +FREES() +#define VakQty 6 +#define RowQty 4 +#define VakLengte .500 + New Prijs,ProfKant,ProfQty,ProfWisselQty,ProfPlaats,ProfDiam,GatType,ProfGatenQty,BoorWissel,ProfCnt + Set ProfKant="" + Set Prijs=0 + Set ProfCnt=0 + ; Tellen van hoeveel profielen er moeten genomen worden van de 4 + For Set ProfKant=$O(TelProf(ProfKant)) Quit:ProfKant="" Do + . Set ProfPlaats="" + . For Set ProfPlaats=$O(TelProf(ProfKant,ProfPlaats)) Quit:ProfPlaats="" Do + .. Set:'$D(ProfCnt(ProfPlaats)) ProfCnt=ProfCnt+1 ; NVDR.(Wim) : ALTIJD DUS ! + .. ;Set ProfCnt(ProfPlaats)="" ; markeer ProfPlaats als "reeds geteld" + ; + New PLen,ProfsPerRij + Set PLen=$S(IsLosProf:LosProfLengte, Hoogte Set KaliberNew=(ProfQty*Staffel)\(($$$VakQty\((PLen\$$$VakLengte)+1))*$$$RowQty)+1 + Set ProfsPerRij=$$$VakQty\((PLen\$$$VakLengte)+1) + Set:(ProfsPerRij<1) ProfsPerRij=1 ; voor profielen groter dan de totale lengte van de Kaliber + Set ProfKant="" + For Set ProfKant=$O(TelProf(ProfKant)) Quit:ProfKant="" Do + . New BoorWissel,ProfGatenQty + . Set (ProfQty,ProfWisselQty)=0 + . Set ProfPlaats="" + . For Set ProfPlaats=$O(TelProf(ProfKant,ProfPlaats)) Quit:ProfPlaats="" Do + .. Set ProfQty=ProfQty+1 + .. Set ProfDiam="" + .. For Set ProfDiam=$O(TelProf(ProfKant,ProfPlaats,ProfDiam)) Quit:ProfDiam="" Do + ... Set:'$D(BoorWissel(ProfDiam)) ProfWisselQty=ProfWisselQty+1,BoorWissel(ProfDiam)="" + ... Set:ProfDiam<10 GatType="K" + ... Set:ProfDiam'<10 GatType="G" + ... Set ProfGatenQty(GatType)=$G(ProfGatenQty(GatType))+TelProf(ProfKant,ProfPlaats,ProfDiam) + . ;Set KaliberNew=(ProfQty*Staffel)\(($$$VakQty\((PLen\$$$VakLengte)+1))*$$$RowQty)+1 ; Berekening: zie boven + . Set KaliberNew=(ProfQty*Staffel)\(ProfsPerRij*$$$RowQty)+1 ; Berekening: zie boven + . Set Prijs=Prijs+$$KOST($S(IsLosProf:"FL", 1:%this.ProfType.FreesKostCode)) + Quit Prijs +ZAAG(Lengte) + New MaxLengte + Set MaxLengte=$S($E(%this.ProfType.%Id(),2)="S":.350,1:.400) + Quit:Lengte'emKostObj.TijdMin:Tijd,1:emKostObj.TijdMin) + Set TijdViaMin=(Tijd=emKostObj.TijdMin) + Set TijdKost=$J(%this.KostPlaatsKost*%this.KostToeslagKlein*%this.KostToeslagGroot*Reductie*Tijd/3600,0,4) + Set:Staffel=10&(%this.Variabelen["Staffel") TijdKost=TijdKost*2 ; Indien Staffel=10 dan niet ineens delen door 10 maar wel door 5 + ; Voor de prijsberekening kan er een speciale prijs doorgegeven worden + Set MatBasis2=$G(MatBasis,emKostObj.MatBasis) + Set MatMultiplicant2=$G(MatMultiplicant,emKostObj.MatMultiplicant) + Set MatMin2=$G(MatMin,emKostObj.MatMin) + Set Mat=MatBasis2+(MatMultiplicant2*Multi) + Set:Mat Mat=$S(Mat>MatMin2:Mat,1:MatMin2) + Set MatViaMin=(Mat=MatMin2) + Set:$G(MatFull) Mat=MatFull,MatViaMin=0 + Set Mat=$J(Reductie*Mat,0,4) + ;W Multi,*9,Reductie,$J(Tijd,10,4),$J(TijdKost,10,4),$J(Mat,10,4) + If Mat!Tijd,CalcObj Do + .Set CalcDtlObj=##class(Prod.GADef.emKadPrijsDtl).%New() + .Set CalcDtlObj.Groep=%this.KostGroep + .Set CalcDtlObj.KostCode=%this.ItemID + .Set CalcDtlObj.KostPlaats=%this.KostPlaats + .Set CalcDtlObj.SortNr=%this.Sort + .Set CalcDtlObj.Multiplicant=Multi + .Set CalcDtlObj.Reductor=Reductie + .Set CalcDtlObj.MatKost=Mat + .Set CalcDtlObj.MatViaMin=MatViaMin + .Set CalcDtlObj.Tijd=$J(Reductie*Tijd,0,0) + .Set CalcDtlObj.TijdKost=TijdKost + .Set CalcDtlObj.TijdViaMin=TijdViaMin + .Set CalcDtlObj.Variabelen=$$EVALVAR(%this.Variabelen) + .Set VolgNr=VolgNr+1 + .Do CalcObj.Details.SetAt(CalcDtlObj,VolgNr) + .Do CalcDtlObj.%Close() + Quit TijdKost+Mat +EVALVAR(Vars) + New Result,I,Var,Val + Set Result="" + For I=1:1:$L(Vars,";") Do + .Set Var=$P(Vars,";",I) + .Quit:'$L(Var) + .X "Set Val=$G("_Var_",""???"")" + .Set Result=Result_"; "_Var_"="_Val + Quit $E(Result,3,999) + */ + +IMPORTCLEAN + Set TabelID=4 + Set ID="" + For Set ID=$O(^ResItemsD(TabelID,ID)) Quit:ID="" Do + .Set Obj=##class(Res.PI.Items).%OpenId(TabelID_"||"_ID) + .If Obj.BeperkingTabel="NEW" Do + .. ;Write Obj," " + .. Kill Obj + .. Do ##class(Res.PI.Items).%DeleteId(TabelID_"||"_ID) + .Else Do + .. Kill Obj + Quit + ; Do IMPORT^Prod.GADef.KaderDeur.KostPrijs +IMPORT + New Obj,DevObj,emObj + Set t=$P($H,",",2) + Do IMPORTCLEAN + Set DevObj=##class(%Library.File).%New("c:\KAD KostDtl.TXT") + ;Write DevObj.Size + Do DevObj.Open("R") + Do DevObj.Rewind() + Set D=$C(9) + Set Cnt=0 + For Set Len=1000,Rec=DevObj.Read(.Len) Quit:Rec="" Do + . Set Cnt=Cnt+1 + . Quit:Cnt=1 ; niet de titel + . ;Write Cnt," " ,$P(Rec,D,1),! ; ," ",$$TRIM($P(Rec,D,9)),! + . Set ID=$P(Rec,D,1) + . Quit:ID="" + . Set TabelID=4 ;=##class(Res.PI.Definitie).IDViaNaam("Kost") + . Set TabObj=##class(Res.PI.Definitie).%OpenId(TabelID) + . Set Obj=##class(Res.PI.Kost).%New() + . Set Obj.TabelID=TabObj + . Set Obj.ItemID=ID + . Set Obj.BeperkingTabel="NEW" + . Set Obj.Sort=$P(Rec,D,2) + . Set Obj.Omschrijving=$$TRIM($P(Rec,D,3)) + . Set Obj.KostGroep=$P(Rec,D,4) + . Set Obj.KostPlaats=$P(Rec,D,5) + . Set Obj.KostPlaatsKost=$TR($P(Rec,D,6),",",".") + . Set Obj.KostToeslagGroot=$TR($P(Rec,D,7),",",".") + . Set Obj.KostToeslagKlein=$TR($P(Rec,D,8),",",".") + . Set Obj.ReductieFormule=$$TRIM($P(Rec,D,9)) + . Set Obj.MultiplicantFormule=$$TRIM($P(Rec,D,10)) + . Set Obj.Variabelen=$$TRIM($P(Rec,D,11)) + . Set emObj=##class(Res.PI.emKostDetail).%New() + . Set Staffel=$P(Rec,D,12) + . ; om het resultaat van de prijsberekening niet te doen veranderen van CAche V4 naar V5 moet tijdbasis en multiplicant integer zijn. + . ; de integer wordt getrunceerd, niet afgerond + . Set emObj.TijdBasis=$tr(+$P(Rec,D,13),",",".") + . Set emObj.TijdMultiplicant=$tr(+$P(Rec,D,14),",",".") + . Set emObj.TijdMin=$tr($P(Rec,D,15),",",".") + . Set emObj.MatBasis=$TR($P(Rec,D,16),",",".") + . Set emObj.MatMultiplicant=$TR($P(Rec,D,17),",",".") + . Set emObj.MatMin=$TR($P(Rec,D,18),",",".") + . Do Obj.Staffel.SetAt(emObj,Staffel) + . ;Do DumpObject^%apiOBJ(Obj) + . Write Cnt," ",$$ParseStatus^vhLib(Obj.%Save()),! + . Set (Obj,emObj)="" + Set DevObj="" + Write !,"Duur : ",$P($H,",",2)-t + Write !,"Aantal : ",Cnt,! + Quit +TRIM(String) + Quit:$E(String)="""" $$TRIM($E(String,2,$L(String)-1)) + Quit:String["""""" $$TRIM($P(String,"""""")_""""_$P(String,"""""",2,9999)) + Quit String + + + + + /* +CALC(%this,Staffel,CalcObj) + s %ClientIP=$G(%ClientIP,"192.168.1.97") +#define TestMode 0 +#define SINGLESaveGAData ($O(%arFakeIDs($O(%arFakeIDs(""))))="")&&($O(%arFakeIDs(""))'="") + Quit $$CALCviaGADataProductTMP(%this,.Staffel,.CalcObj) +#If $$$TestMode + Quit $$CALCTEST(%this,.Staffel,.CalcObj) +#Else + Quit:($$CalcNewKost^Prod.GADef.KaderDeur.tmpDev()) $$CALCviaGADataProductTMP(%this,.Staffel,.CalcObj) + Quit $$CALCviaResPiKost(%this,.Staffel,.CalcObj) +#EndIf + */ + + /* +CALCviaGADataProductTMP(%this,Staffel,CalcObj) + New KPrijs + Set $ZTRAP="cgpCalcError" + ;Set %NoSa=$G(%NoSa,"S") ; $S(blnCalcNew=2:$G(%NoSa,"S"), 1:$G(%NoSa,"")) ; $S(blnCalcNew=2:"S", 1:"") + d WLIP^vhDBG(97,"KAD KPCalc New - %NoSa : "_$G(%NoSa)_" Staffel: "_Staffel) + d WL^vhDBG("New "_$G(KadID)) + Set KPrijs=$$CALCviaGADataProduct(%this,.Staffel,.CalcObj) ; =$$CalcKostPrijsNew^Prod.GADef.KaderDeur.tmpDev(%this,.Staffel,.CalcObj) + d WL^vhDBG("CALCviaGADataProduct : "_KPrijs_" EUR") + ;Kill %NoSa ; Globale variabele onmiddellijk verwijderen na calculatie product + Set $ZTRAP="" + Quit KPrijs +cgpCalcError + Set Err=$ZE + Set $ZTRAP="" + Set msg="KostPrijsCalc Error : "_$$$CRLF ; _Err ; $$ParseStatus^vhLib(Err) + d WLIP^vhDBG(97,"Error KAD KPCalc New - "_$G(KadID)_" - %NoSa : "_$G(%NoSa)) + d WLIP^vhDBG(97,msg) + Set $ZE="" + Quit "" + */ + + /* +CALCTEST(%this,Staffel,CalcObj) + New blnCalcNew + Set blnCalcNew=1 ; 1 = only CalcNew ; 2 = CalcNew + CalcOLD ; 0 = CalcOLD + Quit:(blnCalcNew) $$CALCviaGADataProductTEST(%this,.Staffel,.CalcObj) + Quit $$CALCviaResPiKost(%this,.Staffel,.CalcObj) + +CALCviaGADataProductTEST(%this,Staffel,CalcObj) + New KPrijs,KadID,VulID,lbVulE,tmpLB,tmpLB2 + New tmpQty + Set $ZTRAP="cgpCalcError" + Set:('$D(%NoSa)) %NoSa=$S(blnCalcNew:"S", 1:"") + Set KadID=%this.%Id() + ;d WLIP^vhDBG(97,"KAD KPCalc New - "_KadID_" - %NoSa : "_$G(%NoSa)_" Staffel: "_Staffel) + ;Set %arLOG(0) =$LB("[NP]","[OP]","[DIFF]","Toepas","Prof","Vul","Hgt","Brd","Qty","FrezZK","LVE","VPKType","ProfKS","VulKS","ConsKS") + + If $IsObject(%this.Vulling.Vulling) Do + . Set VulID=%this.Vulling.Vulling.ItemID + . Set lbVulE=$$cgpListVullingExtras(%this) + Set tmpLB=$LB(%this.ProfAfwKostSpecial,%this.VullingKostSpecial,%this.ConstructKostSpecial) + Set:(tmpLB=$LB("","","")) tmpLB="" + Set tmpLB2=%this.VerpakkingsType($G(Staffel,1)) + Set tmpLB=$S(tmpLB2'=$LB("K"):$LB(tmpLB2), $L(tmpLB):$LB(), 1:"")_tmpLB + Set tmpLB=$S($L($G(lbVulE)):$LB(lbVulE), $L(tmpLB):$LB(), 1:"")_tmpLB + Set tmpLB=$LB()_tmpLB + Set %arLOG(KadID)=$LB("[NP]","[OP]","[DIFF]",%this.Toepassing.ItemID,%this.ProfAfw.ItemID,$G(VulID),%this.Hoogte,%this.Breedte,$G(Staffel,1))_tmpLB + + If $G(blnCalcNew)=2 Do + . Set tmpQty=$G(Staffel) + . Set KPrijs=$$CALCviaResPiKost(%this,.Staffel,.CalcObj) + . Set $LI(%arLOG(KadID),2)=KPrijs + . ;d WL^vhDBG("CALCviaResPiKost : "_KPrijs_" EUR") + Set:($G(tmpQty)>0) Staffel=tmpQty ; Reset Staffel + Set KPrijs=$$CALCviaGADataProduct(%this,.Staffel,.CalcObj) ; =$$CalcKostPrijsNew^Prod.GADef.KaderDeur.tmpDev(%this,.Staffel,.CalcObj) + Set tmpLB2=$G(%FRZ("ProfKant")) + Set:(tmpLB2=$LB("ON"))||(tmpLB2=$LB("IN","ON")) tmpLB2="" + Set $LI(%arLOG(KadID),1)=KPrijs + Set $LI(%arLOG(KadID),3)=$LI(%arLOG(KadID),1)-$LG(%arLOG(KadID),2) + Set $LI(%arLOG(KadID),10)=tmpLB2 + ;d WL^vhDBG("CALCviaGADataProduct : "_KPrijs_" EUR") + Kill %NoSa ; Globale variabele onmiddellijk verwijderen na calculatie product + Set $ZTRAP="" + Quit KPrijs +cgpListVullingExtras(KadObj) + Quit:('$IsObject(KadObj.Vulling)) + New Key,VE,tmpLB + Set (tmpLB,Key)="" + For Set VE=KadObj.Vulling.VullingExtra.GetNext(.Key) Quit:(Key="") Set tmpLB=tmpLB_$LB(VE.ItemID) + Quit tmpLB + */ + + \ No newline at end of file Index: Prod/GADef/KaderDeur/TemplGeneral.mac.rou =================================================================== diff -u --- Prod/GADef/KaderDeur/TemplGeneral.mac.rou (revision 0) +++ Prod/GADef/KaderDeur/TemplGeneral.mac.rou (revision 1152) @@ -0,0 +1,171 @@ + ; AUTHOR : Wim VERMEULEN + ; LOCATION : VAN HOECKE N.V. + ; LAST MODIFIED : 27/06/2001 + ; + ; THIS ROUTINE EXTENDS THE PROPERTIES FROM GIVEN OBJECT WITH THE SPECIFIED TEMPLATE OBJECT + ; + ; --> CALL ExtendFT(KadObj,Templ,...) + ; IT EXTENDS THE OBJECT's (KadObj) FIXED PROPERTIES WITH THE TEMPLATE's (Templ) DYNAMIC PROPERTIES. + ; GENERAL CODE TO CALCULATE FIXED VALUES FROM THE DYNAMIC VALUES IS PROVIDED HERE. + ; + + +ExtendFT(KadObj,Templ,Param1,Param2,Param3,Param4,Param5) + ; ExtendF(rom)T(emplate) :Extends the KadObj with the dynamic properties from the template + ; Parameter declaration: + ; --------------------- + ; KadObj As Prod.GADef.KaderDeur + ; Templ As Prod.GADef.KaderDeur + ; Param1-5 are not used in this routine + Quit:('Templ) + + New Key + ; Extend properties + Do KDExtendPropts(.KadObj,Templ) + ; Extend Beslag + Set Key="" + For Do Templ.Beslag.GetNext(.Key) Quit:Key="" Do + .Do KDExtendBeslag(.KadObj, Templ.Beslag.GetAt(Key),Key) + ; Extend list of Boringen + Set Key="" + For Do Templ.Boringen.GetNext(.Key) Quit:Key="" Do + .Do KDExtendBoring(.KadObj, Templ.Boringen.GetAt(Key),Key) + Quit + +KDExtendPropts(KadObj,Templ) + New ToepasID,OphangPID,ProfielTypeID,Hoogte,Breedte,VullingID,VullingExtras,Gemonteerd,Verpakking + Set:(KadObj.ToepassingGetObjectId()="") ToepasID=$P(Templ.ToepassingGetObjectId(),"||",2) + Set:(KadObj.OphangPlaatsGetObjectId()="") OphangPID=$P(Templ.OphangPlaatsGetObjectId(),"||",2) + Set:(KadObj.ProfTypeGetObjectId()="") ProfielTypeID=$P(Templ.ProfTypeGetObjectId(),"||",2) + Set:(KadObj.ProfAfwGetObjectId()="") ProfielTypeID=$P(Templ.ProfAfwGetObjectId(),"||",2) + Set:(KadObj.Hoogte="") Hoogte=Templ.Hoogte + Set:(KadObj.Breedte="") Breedte=Templ.Breedte + Set:(KadObj.Gemonteerd="") Gemonteerd=Templ.Gemonteerd + Set:(KadObj.Verpakking="") Verpakking=Templ.Verpakking + ;;Set:(KadObj.Vulling.Vulling="") VullingID=$P(Templ.Vulling.VullingGetObjectId(),"||",2) + ;;Set:(KadObj.Vulling.VullingExtras="") VullingExtras=$$ConvertToIDString(Templ.Vulling.VullingExtras) + ;If (KadObj.Vulling.Vulling=""),(Templ.Vulling.VullingGetObjectId()'="") Set KadObj.Vulling=Templ.Vulling + Do FillKDPropts^Prod.GADef.KaderDeur.Templates(.KadObj,$G(ToepasID),$G(OphangPID),$G(ProfielTypeID),$G(Hoogte),$G(Breedte),,,$G(Gemonteerd),$G(Verpakking),"") + ;Do FillKDPropts^Prod.GADef.KaderDeur.Templates(.KadObj,$G(ToepasID),$G(OphangPID),$G(ProfielTypeID),$G(Hoogte),$G(Breedte),$G(VullingID),$G(VullingExtras),$G(Gemonteerd),$G(Verpakking),"") + Set KadObj.TemplateUsed=Templ.TemplateUsed + Quit + +KDExtendBeslag(KadObj,TemplBSL,BeslagKey) + New emBeslag,BeslagTypeID,emTemplPos,emNewPos,PosKey,PrevLPos + Do KadObj.Beslag.RemoveAt(BeslagKey) + Set emBeslag=##class(Prod.GADef.emKadBeslag).%New() + Do:(emBeslag.BeslagGetObjectId()="") emBeslag.BeslagSetObjectId(TemplBSL.BeslagGetObjectId()) + ;Quit:(TemplBSL.Positie.Count()'>0) + Set PrevLPos=0 + Set PosKey="" + Do emBeslag.Positie.Clear() + For Do TemplBSL.Positie.GetNext(.PosKey) Quit:PosKey="" Do + . Set emTemplPos=TemplBSL.Positie.GetAt(PosKey) + . Quit:(emTemplPos.LengtePos_emTemplPos.RelLengtePos="") + . Set emNewPos=##class(Prod.GADef.emKadBeslagPos).%New() + . Set emNewPos.LengtePos=$$FixedPosBeslag(emTemplPos,KadObj,BeslagKey,PosKey,emBeslag,PrevLPos) ; ,TemplBSL) + . ;Set emNewPos.RelLengtePos="" + . ;Set emNewPos.LengtePos=emTemplPos.AbsPosGet("L",KadObj) + . Set:(emTemplPos.RelLengtePos'>0) emNewPos.RelLengtePos=emTemplPos.RelLengtePos + . Set:(emTemplPos.AfstandRand'="") emNewPos.AfstandRand=emTemplPos.AfstandRand + . Set PrevLPos=emNewPos.LengtePos + . Do emBeslag.Positie.SetAt(emNewPos,PosKey) + . Do emNewPos.%Close() + . ; Next Positie + Do KadObj.Beslag.SetAt(emBeslag,BeslagKey) + Do emBeslag.%Close() ; Reference is now held by the KadObj (=KadObj) + Quit + +KDExtendBoring(KadObj,TemplBoor,BKey) + Quit:('$L(TemplBoor.XPos_TemplBoor.RelXPos)!'$L(TemplBoor.YPos_TemplBoor.RelYPos)!'$L(TemplBoor.BoorDiameter)!'$L(TemplBoor.BoringType)!'$L(TemplBoor.BoorDiepte)) + New emBoring + Set emBoring=##class(Prod.GADef.emKadBoring).%New() + Set emBoring.XPos=$$FixedPosBoring("X",TemplBoor,KadObj) + Set emBoring.YPos=$$FixedPosBoring("Y",TemplBoor,KadObj) + ;Set emBoring.XPos=templBoor.AbsPosGet("X",KadObj) + ;Set emBoring.YPos=templBoor.AbsPosGet("X",KadObj) + Set:(TemplBoor.RelXPos'>0) emBoring.RelXPos=TemplBoor.RelXPos + Set:(TemplBoor.RelYPos'>0) emBoring.RelYPos=TemplBoor.RelYPos + + Set emBoring.BoorDiameter=TemplBoor.BoorDiameter + Set:(TemplBoor.AfschuinDiameter) emBoring.AfschuinDiameter=TemplBoor.AfschuinDiameter + Set emBoring.BoringType=TemplBoor.BoringType + Set emBoring.BoorDiepte=TemplBoor.BoorDiepte + Set:(TemplBoor.BoorGlasDiameter) emBoring.BoorGlasDiameter=TemplBoor.BoorGlasDiameter + Set:($L(TemplBoor.ZPos_TemplBoor.RelZPos)) emBoring.ZPos=$$FixedPosBoring("Z",TemplBoor,KadObj) + ;If TemplBoor.ZPos_TemplBoor.RelZPos'="" Do + ;. Set emBoring.ZPos=templBoor.AbsPosGet("Z",KadObj) + ;. Set:(TemplBoor.RelZPos'>0) emBoring.RelZPos=TemplBoor.RelZPos + Set:(TemplBoor.RelZPos'>0) emBoring.RelZPos=TemplBoor.RelZPos + Set emBoring.CncID=TemplBoor.CncID + + ; Controle Boring + Do KadObj.ControleBoring(emBoring) + Set:($E(emBoring.TxtOpmerking,1,3)'="OK:") emBoring.Opmerking=emBoring.TxtOpmerking + ;Set:(emBoring.BoringPlaats?1"P"1A1";VUL") emBoring.BoorGlasDiameter=8 + + ; Add emBoring to Array + Set BKey=$E($G(BKey)_"X",1) + Do KadObj.Boringen.SetAt(emBoring,$S(BKey?.A:BKey, 1:"X")_$TR($J(KadObj.Boringen.Count()+1, 2), " ", "0")) + ;Do KadObj.Boringen.SetAt(emBoring,KadObj.Boringen.Count()+1) + Do emBoring.%Close() + Quit + +FixedPosBeslag(emTemplPos,KadObj,BeslagKey,PosKey,emBeslag,PrevLPos) ; ,TemplBSL) + ; Special Relative Postitions: following codes can be used: + ; "ctr" : position from the center + ; "ops" : position from opposite side; i.e. keep or make number negative + Quit:(emTemplPos.LengtePos'<0)&($L(emTemplPos.RelLengtePos)=0) emTemplPos.LengtePos ; Return value immediatly + New FixV,FixV2,MaxSize,Plaats + ; Determine MaxSize + Set Plaats=KadObj.ProfielPlaatsGet(emBeslag, BeslagKey, PosKey) + Set MaxSize=$S((Plaats="PL")!(Plaats="PR"):KadObj.Hoogte, (Plaats="PB")!(Plaats="PO"):KadObj.Breedte, 1:0) + ; Calculate Fixed Value for LengtePos + Set FixV=emTemplPos.LengtePos + If $L(emTemplPos.RelLengtePos) Do ; Calculate Special Relative Position + . If emTemplPos.RelLengtePos["ctr" Do + .. ; From center + .. Set FixV=(MaxSize/2)+FixV + . Else If emTemplPos.RelLengtePos["ops" Do + .. ; From opposite side + .. Set:(FixV>0) FixV=-FixV + . Else Do + .. ; Other codes for Beslag Special Relative Postitions + .. Set FixV2=KadObj.AbsPosCalc("S",emTemplPos.RelLengtePos,.PrevLPos) + .. Set:(FixV2'=emTemplPos.RelLengtePos)!(FixV2'<0) FixV=FixV2 + .. Quit + . Set:($E(emTemplPos.RelLengtePos,1)="-")&($G(FixV2)'=FixV) FixV=-FixV ; dynamic value from opposite site + .; End If $L(RelPos) + Quit:($G(FixV2)=FixV) FixV + Set:(FixV<0)&&(emTemplPos.RelLengtePos'["ops")&&(BeslagKey'="LB") FixV=MaxSize+FixV ; Substract = add Negative Number + Quit FixV + +FixedPosBoring(sPropt,TemplBoor,KadObj) + ; The parameter sPropt can be: "X", "Y", "Z" + ; Special Relative Postitions: following codes can be used: + ; "ctr" : position from the center + ; "pIN" : Position from the . Only for "X" and "Y" !!! + Quit:'((sPropt="X")!(sPropt="Y")!(sPropt="Z")) "Error" + New FixV,FixV2,MaxSize,TemplPos,TemplRelPos ;,Plaats + Xecute "Set TemplPos=TemplBoor."_sPropt_"Pos" ; =TemplBoor.XPos or YPos or ZPos + Xecute "Set TemplRelPos=TemplBoor.Rel"_sPropt_"Pos" + Quit:(TemplPos'<0)&($L(TemplRelPos)=0) TemplPos ; Return value immediatly + Set MaxSize=$S(sPropt="X":KadObj.Breedte, sPropt="Y":KadObj.Hoogte, sPropt="Z":KadObj.ProfType.Dikte, 1:0) + Set FixV=TemplPos + If $L(TemplRelPos) Do ; Calculate Special Relative Position + . If TemplRelPos["ctr" Do + .. ; From center + .. Set FixV=(MaxSize/2)+FixV + . Else If (TemplRelPos["pIN")&((sPropt="X")!(sPropt="Y")) Do + .. ; From Interne Kant van het Profiel + .. Set FixV=KadObj.ProfType.Breedte+FixV + . Else Do + .. ; Other codes for Beslag Special Relative Postitions + .. Set FixV2=KadObj.AbsPosCalc(sPropt,TemplRelPos) + .. Set:(FixV2'=TemplRelPos)!(FixV2'<0) FixV=FixV2 + .. Quit + . Set:($E(TemplRelPos,1)="-")&($G(FixV2)'=FixV) FixV=(-1)*FixV ; dynamic value from opposite site + . Quit ; If $L(RelPos) + Quit:($G(FixV2)=FixV) FixV + Set:(FixV<0) FixV=MaxSize+FixV ; Substract = add Negative Number + Quit FixV \ No newline at end of file Index: Prod/GAData/Product/tmpDev.mac.rou =================================================================== diff -u --- Prod/GAData/Product/tmpDev.mac.rou (revision 0) +++ Prod/GAData/Product/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,412 @@ +#include %VHMacro +#include %occInclude + +TTrace ; Parameters: Msg +#define Prefix "GAProd: " +#define Prefix2 "" + Do WL^vhDBG($$$Prefix_$G(Msg)) + ;Do WLS^vhDBG($$$Prefix2_$G(Msg),1) + Quit + +UseTurbo() + Quit 0 + + +BuildTreeDeps ; Parameters: Ref +#define DEP "DEP" + Kill @Ref + Kill ..arTree($$$DEP) + Quit:('..MetaStruct) + New tmpAr + New iG,iS,iI,MetaHG,MetaG,MetaS,MetaI,DItem,Key + New PKey,PrmVal,MParam,tmpLB,i + ;Do %this.BuildLookUp() + Do %this.BuildLookUp($LB("SG","ICode","ISort")) + Set MetaHG=..MetaStruct + Set Key="" + For Set DItem=..DataItems.GetNext(.Key) Quit:(Key="") Do + . Quit:(DItem.SubGroepCode="") + . Set MetaI=DItem.MetaItem + . Set MetaS=$G(..LookUp("SG",DItem.SubGroepCode)) ; $LG( ... ,1) + . Set MetaG=MetaS.Groep ; $G(..LookUp("SG",DItem.SubGroepCode,"GR")) + . Set iI=DItem.VolgNr + . Set iS=$LF($$btd2ExprToList(MetaG.ChildExpr),MetaS.Code) + . Set iG=$LF($$btd2ExprToList(MetaHG.ChildExpr),MetaG.Code) + . Set tmpAr($$$DEP,iG,iS,iI)=DItem + . Set tmpAr($$$DEP,iG,iS)=MetaS + . Set tmpAr($$$DEP,iG)=MetaG + Merge @Ref=tmpAr + Merge %this.arTree=tmpAr + Quit +btd2ExprToList(sExpr) + ; Convert Child Expression to $LB() + Set tmpLB="" + For i=1:1:$L(sExpr,"+") Set tmpLB=tmpLB_$LB($P(sExpr,"+",i)) + Quit tmpLB + + +BuildTreeData ; Parameters: Ref,blnShowPrijs +#define DATA 1 +#define OBJ "OBJ" +#define FMT "FMT" +#define ShowValueIf(%cond,%val,%else) $S(%cond:%val ,1:%else) + Kill @Ref + Kill ..arTree($$$DATA) + Kill ..arTree($$$OBJ) + Kill ..arTree($$$FMT) + Quit:('..MetaStruct) + New tmpAr,tmpAr2 + New iG,iS,iI,MetaHG,MetaG,MetaS,MetaI,DItem,Key + New PKey,PrmVal,MParam,tmpLB,i,iK + Do %this.BuildLookUp() + Set MetaHG=..MetaStruct + Set tmpAr($$$DATA)=$LB(MetaHG.Omschrijving) + Set Key="" + ;d CLS^vhDBG + ;d ..TTrace($$ArrayToText^vhLib("%this.LookUp")) + For Set DItem=..DataItems.GetNext(.Key) Quit:(Key="") Do + . Quit:('DItem.IsActief(0)) + . Quit:(DItem.SubGroepCode="") + . Set MetaI=DItem.MetaItem + . Set MetaS=$G(..LookUp("SG",DItem.SubGroepCode)) ; $LG( ... ,1) + . Set MetaG=MetaS.Groep + . Set iI=DItem.VolgNr + . Set iS=$LF($$btdExprToList(MetaG.ChildExpr),MetaS.Code) + . Set iG=$LF($$btdExprToList(MetaHG.ChildExpr),MetaG.Code) + . Set tmpAr($$$DATA,iG)=$LB(MetaG.Omschrijving,+$J($G(..Cumuls("TijdWerk",iG)),0,2),$$$ShowValueIf(blnShowPrijs,+$J($G(..Cumuls("KPrijs",iG)),0,6),"")) + . Set tmpAr($$$DATA,iG,iS)=$LB(MetaS.Omschrijving,+$J($G(..Cumuls("TijdWerk",iG,iS)),0,2),$$$ShowValueIf(blnShowPrijs,+$J($G(..Cumuls("KPrijs",iG,iS)),0,6),"")) + . ;Set:(iI="") iI="999" + . Do btdBuildColumnData + . Do btdBuildKostDtls + . Set tmpAr($$$FMT,iG,iS,iI)=$LB(MetaI.RijFormat) + . Set tmpAr2("OREF",iG,iS,iI)=DItem + Merge @Ref=tmpAr + Merge @Ref=tmpAr2 + Merge ..arTree=tmpAr + Quit +btdExprToList(sExpr) + ; Convert Child Expression to $LB() + Set tmpLB="" + For i=1:1:$L(sExpr,"+") Set tmpLB=tmpLB_$LB($P(sExpr,"+",i)) + Quit tmpLB +btdBuildColumnData + Set tmpLB="" + ;d:(DItem.Code="PRKENM001") ..TTrace("Begin ColumnData") + Set PKey="" + For Set MParam=MetaI.Parameters.GetNext(.PKey) Quit:(PKey="") Do:(MParam.ShowInTree'="") + . Set $LI(tmpLB,MParam.KolomNr)=$$$ShowValueIf(blnShowPrijs||(PKey'="KPrijs"),DItem.Get(PKey),"") + For i=$LL(tmpLB):-1:1 $$$DoLBDeleteAtIf('$LD(tmpLB,i),tmpLB,i) ; Lege ListItems verwijderen ; OLD: Set:('$LD(tmpLB,i)) tmpLB=$$$LBDeleteAt(tmpLB,i) + Set tmpAr($$$DATA,iG,iS,iI)=tmpLB + ;d:(DItem.Code="PRKENM001") ..TTrace("End ColumnData") + Quit +btdBuildKostDtls +#define KDelim "-" +#define NOT(%v) '(%v) + New ChildID,Templ,TPDItem,KostArray,KKey,emKost,lbIDs,KeyKDtl ; ,blnDtlExist,blnDtlOther ; ,blnLoopList + New KeyBegin,LoopID,Num,FirstSpace + Set ChildID=DItem.Code + Set Templ=DItem.Product.TemplateTmp ;Quit:('Templ) "" + Set TPDItem=Templ.Product.DataItemsGetChildAt(ChildID) ;Quit:('TPDItem) "" + Do btdKostDtlData("T",$$$KDelim_ChildID) + Do btdKostDtlData("M",$$$KDelim_ChildID) + Quit +btdKostDtlData(KostType,LoopKey) +#define NumWithZeros(%v) $TR($J(%v,3)," ","0") +#define StartsWith(%T,%t) ($P(%T_" ",%t,1)="") +#define LoopKostArray Set emKost=KostArray.GetNext(.KKey) Quit:(KKey="") +#define WaardeKDtl(%i) $LG($G(arKDtl(KeyKDtl)),%i) +#define KOms emKost.Omschrijving +#define KMulti emKost.Multiplicant +#define KReduc emKost.Reductie +#define KKostID emKost.KostMatID + ; #define KPropts [emKost.KostPlaatsGetObjectId(),] emKost.AParam,emKost.BParam,emKost.Min,emKost.StaffelMin,emKost.StaffelMax +#define KPropts emKost.AParam,emKost.BParam,emKost.Min,emKost.StaffelMin,emKost.StaffelMax + ; Debug: waarden van Multiplic, Reduct en totaal toevoegen +#define KOmsX $$btdAddValToText($$$WaardeKDtl(1),emKost.Omschrijving) +#define KMultiX $$btdAddValToText($$$WaardeKDtl(2),emKost.Multiplicant) +#define KReducX $$btdAddValToText($$$WaardeKDtl(3),emKost.Reductie) +#define KKostIDX $$btdAddStrToText($$$WaardeKDtl(4),emKost.KostMatID) +#define LoopID $S($L(LoopID):"i="_$E(LoopID,1,5)_" ",1:FirstSpace) +#define blnNoOtherDtls ('$$$StartsWith($O(arKDtl(KeyKDtl)),KeyKDtl)) + + Set KKey="" + Set KostArray=$S(KostType="M":TPDItem.KostMat, 1:TPDItem.KostTijd) ; Materiaal of Tijd - array of objects + If 'blnShowPrijs Do + . For $$$LoopKostArray Do + .. Set tmpAr($$$DATA,iG,iS,iI,emKost.VolgNr)=$LB($$$KOms,KKey,KostType,$$$KMulti,$$$KReduc,$$$KKostID,$$$KPropts) + Else Do ; Show Dtls met Prijs + . Set FirstSpace="" + . For $$$LoopKostArray Do + .. Set KeyKDtl=KKey_LoopKey + .. Set:($L($G(arKDtl(KeyKDtl))))||($$$blnNoOtherDtls) tmpAr($$$DATA,iG,iS,iI,emKost.VolgNr)=$LB($$$KOmsX,KKey,KostType,$$$KMultiX,$$$KReducX,$$$KKostIDX,$$$KPropts) + .. Quit:($$$blnNoOtherDtls) + .. ; Else Do ; KostParams worden herhaald binnen het DItem + .. Set KeyBegin=KeyKDtl + .. For Set KeyKDtl=$O(arKDtl(KeyKDtl)) Quit:('$$$StartsWith(KeyKDtl,KeyBegin)) Do + ... Set LoopID=$P($P(KeyKDtl,LoopKey_"#",2),$$$KDelim,2) + ... Set Num=$$$TextBetween(KeyKDtl,LoopKey_"#",$$$KDelim) + ... Set Num=$S($IsValidNum(Num):+(Num_"."_$$$NumWithZeros(emKost.VolgNr)), 1:emKost.VolgNr) + ... Set tmpAr($$$DATA,iG,iS,iI,Num)=$LB($$$LoopID_$$$KOmsX,KKey,KostType,$$$KMultiX,$$$KReducX,$$$KKostIDX,$$$KPropts) + .. Set FirstSpace=" " + Quit +btdAddValToText(Val,Text) + Quit $S(('$IsValidNum(Text)&&($L(Val))):"["_(+$J(Val,0,4))_"] ", 1:"")_Text +btdAddStrToText(Str,Text) + Quit $S(($L(Str))&&(Str'=Text):"["_Str_"] ", 1:"")_Text + +BuildLookUp ; Parameters: lbNodes +#define NodeSG "SG" +#define NodePL "PL" +#define NodeIC "IC" +#define NodeIL "IL" +#define NodePLItem "PLItem" +#define NodeISort "ISort" + Set:('$D(lbNodes)) lbNodes=$LB("SG","PL","ICode","ISort") + ;d WL^vhDBG("BuildLookUp: "_$$ArrayToText^vhLib("%this.LookUp")) + Quit:(lbNodes="") + Do:($LF(lbNodes,"SG")) bluSG + Do:($LF(lbNodes,"PL")) bluPL + Do:($LF(lbNodes,"ICode")) bluICode + Do:($LF(lbNodes,"ISort")) bluISort + Quit +bluSG + ; ..LookUp("SG",SubGroepCode) =Oref SubGroep + New tmpAr,tmpLU + New MetaH,MetaG,MetaS,iG,iS + Kill ..LookUp($$$NodeSG) + Set MetaH=..MetaStruct + Quit:('MetaH) + Set iG="" + For Set MetaG=MetaH.Groepen.GetNext(.iG) Quit:(iG="") Do + . Set iS="" + . For Set MetaS=MetaG.SubGroepen.GetNext(.iS) Quit:(iS="") Do + .. Set tmpLU(MetaS.Code)=MetaS ; $LB(MetaS) + Merge %this.LookUp($$$NodeSG)=tmpLU + Quit +bluPL + ; ..LookUp("PL",ProgLabel)=ParamVal + New tmpLU,iI,iP,DItem,ProgLabel,MParam ; ParamVal + Kill ..LookUp($$$NodePL) + Set iI="" + For Set DItem=..DataItems.GetNext(.iI) Quit:(iI="") Do + . Quit:('DItem.IsActief()) + . Set iP="" + . For Set MParam=DItem.MetaItem.Parameters.GetNext(.iP) Quit:(iP="") Do:(iP?1"ProgLabel".E) + .. Set ProgLabel=DItem.Get(iP) + .. ;d ..TTrace(DItem.Code_" "_DItem.Get("Oms")_" bluPL Begin "_ProgLabel) + .. Set:($L(ProgLabel)) tmpLU(ProgLabel)=DItem.EvalMetaAuto(iP) ; Waarde v/e ProgLabel steeds via MetaExec (MParam.Auto) + .. ;d ..TTrace("bluPL End") + Merge %this.LookUp($$$NodePL)=tmpLU + Quit +bluICode + ; ..LookUp("IC",DItem.Code,"PL",ProgLabel)=ParamKey + ; ..LookUp("PLItem",ProgLabel,"IC")=DItem.Code + ; ..LookUp("PLItem",ProgLabel,"IOref")=Oref DItem + ; ..LookUp("PLItem",ProgLabel,"PKey")=ParamKey + ; ..LookUp("IL",DItem.Label)=Oref DItem + New tmpLU,tmpLU2,tmpLU3,iI,iP,DItem,ProgLabel + Kill ..LookUp($$$NodeIC) + Kill ..LookUp($$$NodePLItem) + Kill ..LookUp($$$NodeIL) + Set iI="" + For Set DItem=..DataItems.GetNext(.iI) Quit:(iI="") Do + . Set:($L(DItem.Label)) tmpLU3(DItem.Label)=DItem + . Set iP="" + . Quit:('DItem.MetaItem) + . For Set iP=DItem.MetaItem.Parameters.Next(iP) Quit:(iP="") Do:(iP?1"ProgLabel".E) + .. Set ProgLabel=DItem.Get(iP) + .. Quit:(ProgLabel="") + .. Set tmpLU(DItem.Code,"PL",ProgLabel)=iP + .. Set tmpLU2(ProgLabel,"IC")=DItem.Code + .. Set tmpLU2(ProgLabel,"IOref")=DItem + .. Set tmpLU2(ProgLabel,"PKey")=iP + Merge %this.LookUp($$$NodeIC)=tmpLU + Merge %this.LookUp($$$NodePLItem)=tmpLU2 + Merge %this.LookUp($$$NodeIL)=tmpLU3 + Quit +bluISort + ; ..LookUp("ISort","Code",DItem.Code)=Oref DItem + ; ..LookUp("ISort","VNr",SubGroepCode,DItem.VolgNr)=Oref DItem + New tmpLU,iI,DItem + Kill ..LookUp($$$NodeISort) + Set iI="" + For Set DItem=..DataItems.GetNext(.iI) Quit:(iI="") Do + . Quit:(DItem.SubGroepCode="") + . Set tmpLU("Code",DItem.Code)=DItem + . Set tmpLU("VNr",DItem.SubGroepCode,DItem.VolgNr)=DItem + Merge %this.LookUp($$$NodeISort)=tmpLU + Quit + + ;Set oKeuken=##class(Prod.GAData.SDMKeuken)(Prod).GADataGetObject() + ;w ##class(Prod.GAData.SDMKeuken)(oKeuken).Aantal,! + + + // ========================================================================================================================================== + + + /// Fill Product.GAData voor SDMKeuken + SDMCorpus(sen) + SDMLade(n) + /// Dit is een test om de storage te bekijken + /// Oproepen via: Do OpenSDData^Prod.GAData.Product.tmpDev(.Prod) +OpenSDData(Prod) + New sc + Set Prod=##class(Prod.GAData.Product).%OpenId(820) + W Prod.Omschrijving,! + Set oKeuken=Prod.GAData ; GetObject() + w "oKeuken : "_oKeuken.%ClassName(),! + ;Set oKeuken=##class(Prod.GAData.SDMKeuken).%Open(Prod.GADataGetObject()) + w "oKeuken : "_oKeuken,! + w oKeuken.KeukenVorm_" "_oKeuken.UitgangDraad_" Qty:"_oKeuken.Aantal,! + w "Corpussen: Cnt="_oKeuken.Corpussen.Count() + Quit + + /// Fill Product.GAData voor SDMKeuken + SDMCorpus(sen) + SDMLade(n) + /// Dit is een test om de storage te bekijken + /// Oproepen via: Do FillSDData^Prod.GAData.Product.tmpDev(.Prod) +FillSDData(Prod,blnNew) + New sc + If $G(blnNew,0) Do + . Set Prod=##class(Prod.GAData.Product).%New() + Else Do + . Set Prod=##class(Prod.GAData.Product).%OpenId(820) + Set Prod.Omschrijving="Test voor GAData ServoDrive" + Set oKeuken=$$fsdCreateKeuken() + ; Corpus 1 + Set oCorpus=$$fsdCreateCorpus(1) + Set oLade=$$fsdCreateLade(1) + Do oCorpus.Laden.Insert(oLade) ;Do oCorpus.Laden.SetAt(oLade,"L01") + Set oLade=$$fsdCreateLade(2) + Do oCorpus.Laden.Insert(oLade) ;Do oCorpus.Laden.SetAt(oLade,"L02") + Set oLade="" + Do oKeuken.Corpussen.Insert(oCorpus) + ; Corpus 2 + Set oCorpus=$$fsdCreateCorpus(2) + Set oLade=$$fsdCreateLade(8) + Do oCorpus.Laden.Insert(oLade) ;Do oCorpus.Laden.SetAt(oLade,"L11") + Set oLade=$$fsdCreateLade(9) + Do oCorpus.Laden.Insert(oLade) ;Do oCorpus.Laden.SetAt(oLade,"L12") + Set oLade="" + Do oKeuken.Corpussen.Insert(oCorpus) + ; ... + Set oCorpus="" + Set Prod.GAData=oKeuken + Set oKeuken="" + Set sc=Prod.%Save() + w $$ParseStatus^vhLib(sc)_" "_Prod.%Id() + Quit +fsdCreateKeuken() + Set oKeuken=##class(Prod.GAData.SDMKeuken).%New() + Do fsdFillKeuken(oKeuken) + Quit oKeuken +fsdFillKeuken(oKeuken) + Set oKeuken.Aantal=1 + Set oKeuken.KeukenVorm="L" + Set oKeuken.UitgangDraad="UD" + Set oKeuken.PlaatsingTransfo="PT" + Set oKeuken.CorpusDeling="CD" + Set oKeuken.FrontSysteem="FS" + Set oKeuken.ExtraBekabeling=10 + Set oKeuken.NMLDempers="NMD" + Quit +fsdCreateCorpus(Index) + Set oCorpus=##class(Prod.GAData.SDMCorpus).%New() + Do fsdFillCorpus(oCorpus,Index) + Quit oCorpus +fsdFillCorpus(oCorpus,Index) + Set oCorpus.Hoogte=800 + Index + Set oCorpus.WandDikteHoogte="" + Set oCorpus.Breedte=600 + Index + Set oCorpus.WandDikteBreedte="" + Set oCorpus.InclKabelgoot=1 + Quit +fsdCreateLade(Index) + Set oLade=##class(Prod.GAData.SDMLade).%New() + Do fsdFillLade(oLade,Index) + Quit oLade +fsdFillLade(oLade,Index) + Set oLade.FrontHoogte=200 + Index + Set oLade.BoringHoogte="" + Set oLade.Draagkracht=50 + Set oLade.SynchroonMet="" + Set oLade.VolgNr=Index + Quit + + /* + */ + + + // ========================================================================================================================================== + + /// AnalyseConditions : kiezen tussen "AND" of "OR" + /// Oproepen via GGDP^WV() +GetGADataProd(arPR) + New PRNr,PRID,Itm,Prm,Condition,blnAND,blnOR,blnMatch,blnNoMatch + Kill arPR + Do ggdAnalyseConditions + Set PRID="" + For Set PRID=$O(^Prod.GAData.ProductD(PRID)) Quit:(PRID="") Do + . Quit:($LG($G(^Prod.GAData.ProductD(PRID)),1)'="TBX||1") + . Set:(blnAND) CntMatch=0 + . Set blnContinue=1 + . Set Itm="" + . For Set Itm=$O(^Prod.GAData.ProductD(PRID,"I",Itm)) Quit:(Itm="") Do Quit:('blnContinue) + . . Set blnContinue=$$ggdCheckLoopItems($LG($G(^Prod.GAData.ProductD(PRID,"I",Itm)),1),$G(^Prod.GAData.ProductD(PRID,"I",Itm,"P","Val"))) + . Set:(blnAND) blnMatch=(blnContinue)&&(CntMatch=QtyCond) ; AND : if Continue=0 : a condition did NOT match --> OK + . Set:(blnOR) blnMatch=('blnContinue) ; OR : if Continue=0 : a condition did match --> OK + . Quit:('blnMatch) + . Set PRNr=$LG($G(^Prod.GAData.ProductD(PRID)),7) + . Set arPR($I(arPR))=$LB(PRID,PRNr) + . w $J(arPR,4)_". GADataID="_PRID_" PRNr="_PRNr_" "_##class(Prod.Product).GetPropViaNr(PRNr,"KortTekst"),! + Quit +ggdAnalyseConditions + Set Condition="AND" + Set QtyCond=3 + Set Condition=$$$UCase(Condition) + Set blnAND=(Condition="AND") + Set blnOR=(Condition="OR") + Quit +ggdCheckLoopItemsAND(Label,Val) + ; ------------------------------------------------- + ; !!! Aan te passen in ggdAnalyseConditions() !!! + ; ------------------------------------------------- + ; Set Condition="AND" + ; Set QtyCond=3 + ; ------------------------------------------------- + If ( Label="LC") Set blnMatch=(Val="K") + Else If (Label="LD") Set blnMatch=(Val=500) + Else If (Label="IB") Set blnMatch=(Val=564) + Else Quit 1 + Set:(blnMatch) CntMatch=CntMatch+1 + Quit blnMatch +ggdCheckLoopItemsOR(Label,Val) + ; ------------------------------------------------- + ; !!! Aan te passen in ggdAnalyseConditions() !!! + ; ------------------------------------------------- + ; Set Condition="OR" + ; ------------------------------------------------- + Quit:(Label="LC")&&(Val="K") 1 + ;Quit:(Label="LD")&&(Val=350) 1 + Quit:(Label="IB")&&(Val=664) 1 + Quit 0 +ggdCheckLoopItems(Label,Val) + Quit:(blnAND) $$ggdCheckLoopItemsAND(.Label,.Val) + Quit:(blnOR) '$$ggdCheckLoopItemsOR(.Label,.Val) + Quit 0 + + +CountGADataParams() + New PRNr,PRID,Itm,Prm,blnMatch,blnNoMatch,cnt + d RestartTimer^vhLib() + Set cnt=0 + Set PRID="" + For Set PRID=$O(^Prod.GAData.ProductD(PRID)) Quit:(PRID="") Do + . Set Itm="" + . For Set Itm=$O(^Prod.GAData.ProductD(PRID,"I",Itm)) Quit:(Itm="") Do + . . Do ggdCountParams + . ;w cnt,! + w "Time needed: "_$$TimeFromStart^vhLib() + Quit +ggdCountParams + Set Prm="" + For Set Prm=$O(^Prod.GAData.ProductD(PRID,"I",Itm,"P",Prm)) Quit:(Prm="") Do + . Set cnt=cnt+1 + Quit \ No newline at end of file Index: Prod/GADef/BT/BeperkAfm/tmpDev.mac.rou =================================================================== diff -u --- Prod/GADef/BT/BeperkAfm/tmpDev.mac.rou (revision 0) +++ Prod/GADef/BT/BeperkAfm/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,130 @@ +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 \ No newline at end of file Index: Prod/GAData/Item/tmpDev2.mac.rou =================================================================== diff -u --- Prod/GAData/Item/tmpDev2.mac.rou (revision 0) +++ Prod/GAData/Item/tmpDev2.mac.rou (revision 1152) @@ -0,0 +1,144 @@ +#include %VHMacro +#include %occInclude + + // Returns Float value or $LB() when KostType="T2" +KostLoop() ; Parameters: KostType +#define NumWithZeros(%v) $TR($J(%v,3)," ","0") +#define KDelim "-" + New Som1,Som2,Self,Meta,GAData,Staffel,ChildID,Templ,TemplProd,TPDItem,KostArray,emKost,Key,blnTijdKost,SubKost,lbIDs,i,KostMatObj,KostMatID,scK,lbMatKost,tmpLB + Set (Som1,Som2)=0 + Set Self=%this + Set Meta=..MetaItem + Set GAData=..Product.GAData ; !!! Version is NOT COMPATIBLE with CACHE02 !!! + Set Staffel=Self.Val("Staffel") + Set:('Staffel) Staffel=1 + ; Nieuwe prijzen : "prijslijst klanten" bestaat niet meer ==> in commentaar gezet op 22/10/04 door WimV. + ;Set:(('..Product.Klant) || (..Product.Klant.Prijsklasse="P")) Staffel=1 ; Voor prijslijst klanten mag de productiestaffel niet toegekend worden + Set ChildID=..Code + Set Templ=..Product.TemplateTmp + Set TemplProd=$S(Templ.SchaduwActief:Templ.SchaduwProduct, 1:Templ.Product) + Set TPDItem=TemplProd.DataItemsGetChildAt(ChildID) + Set KostArray=$S(KostType="M":TPDItem.KostMat,1:TPDItem.KostTijd) ; MatKost of TijdKost - array of objects + Set blnTijdKost=(KostType="T2") + Set lbMatKost="" + If (..Autos.IsDefined("LoopList")) Do + . Set %KostType=KostType + . Set lbIDs=..EvalTemplAuto("LoopList") ; lbIDs=1 --> std kost; lbIDs="" --> geen kostcalc ! + . Kill %KostType + Set scK=$$$OK + If ($G(lbIDs,1)=1)||('$$IsList^vhLib(lbIDs)) Do ; alle KostParams van DItem ��n maal doorlopen + . Do kstLoopParams($$$KDelim_ChildID) + . Set lbIDs="" + For i=1:1:$LL(lbIDs) Do:($LD(lbIDs,i)) ; alle KostParams van DItem n maal doorlopen, waarbij n het aantal is in lbIDs. + . Set %LoopKey=$LI(lbIDs,i) + . Do kstLoopParams($$$KDelim_ChildID_"#"_i_$S(%LoopKey="":"", 1:$$$KDelim_%LoopKey)) + Kill %LoopKey + Do:(KostType="M") ..Parameters.SetAt(lbMatKost,"lbMatKost") + d:($$$ISERR(scK)) WL^vhDBG("Fout in KostObj (Type M/T/T2: "_KostType_"): "_$$ParseStatus^vhLib(scK)) + Quit:($$$ISERR(scK)) $S(blnTijdKost:$LB(9999+$J(Som1,0,2),"ERROR"), 1:scK) + Quit $S(blnTijdKost:$LB($J(Som1,0,2),$J(Som1,0,2)), KostType="T":$J(Som1,0,2), 1:$J(Som1,0,4)) +kstLoopParams(LoopKey) + ; Looping door de kosttijd/mat elementen + Set Key="" + For Set emKost=KostArray.GetNext(.Key) Quit:(Key="")||($$$ISERR(scK)) Do + . Quit:(+emKost.StaffelMin>Staffel) ; Min is ingevuld en Staffel is kleiner dan Min + . Quit:(emKost.StaffelMax)&&(emKost.StaffelMax'>Staffel) ; Max is ingevuld en Staffel is groter dan Max + . Set %KeyKDtl=Key_$G(LoopKey) + . Set SubKost=emKost.Calc(Staffel) + . If (SubKost="ERROR") Do Quit + . . Set scK=$$$ERROR($$$GeneralError,"Fout bij emKost.Calc()") + . . Set SubKost=0 + . ; Else Do + . Set tmpLB="" + . If KostType="M" Do + . . Set tmpLB=$LB(SubKost) + . . Quit:(emKost.KostMatID="") ; MatKost meteen naar EUR omgezet in AParam en BParam, geen MatKost-omrekening nodig + . . Kill KostMatID,ErrorMsg + . . Set KostMatObj=emKost.GetKostMatObj(%this,.KostMatID,.ErrorMsg) ; MatKostID wordt ingevuld + . . Set:($D(arKDtl(%KeyKDtl))) $LI(arKDtl(%KeyKDtl),4)=$S(KostMatID="":"~", 1:KostMatID) + . . ;d WLIP^vhDBG(97,"KostMatObj : "_KostMatObj_" - ID="_KostMatID) + . . If $L($G(ErrorMsg)) Do + . . . Set scK=$$$ERROR($$$GeneralError,ErrorMsg) + . . Else If $IsObject(KostMatObj) Do + . . . Set SubKost=$J(KostMatObj.MatKostCalc(SubKost,$G(%NoSa)),0,4) + . . . Set tmpLB=tmpLB_$LB(KostMatID,SubKost) ; KostMatObj.%Id() + . . Else If KostMatID="" Do + . . . ; ; MatKost meteen naar EUR omgezet, geen MatKost-omrekening nodig + . . . Set SubKost=$J(SubKost,0,4) + . . . Set tmpLB=tmpLB_$LB(KostMatID,SubKost) ; KostMatObj.%Id() + . . Else Do + . . . Set scK=$$$ERROR($$$GeneralError,"Geen KostMat-object") + . . Set:($D(arKDtl(%KeyKDtl))) $LI(arKDtl(%KeyKDtl),1)=$S($$$ISERR(scK):"ERROR",1:"")_SubKost + . Set Som1=Som1+SubKost + . Set:(blnTijdKost) Som2=Som2+emKost.StaffelCorr(SubKost,Staffel) + . Set:(KostType="M") lbMatKost=lbMatKost_$LB(tmpLB) + Kill %KeyKDtl + Quit + + + ; opgeroepen via Prod.GAMeta.EM.KostTijd +StaffelCorr() ; Param : Waarde,Staffel + Quit Waarde*$S($D(%KadObj)&&(Staffel=10)&&((%this.Multiplicant_%this.Reductie)["Staffel"):2, 1:1) + ; Indien Staffel=10 dan niet ineens delen door 10 maar wel door 5 + //Set:(Staffel=10)&(%this.Variabelen["Staffel") TijdKost=TijdKost*2 - ENKEL EN ALLEEN ALS Staffel IN DE BEREKENINGSFORMULE VOORKOMT !!! + + + ; opgeroepen via Prod.GAMeta.EM.KostTijd +CalcOne() ; Parameters: Staffel,BldDtl + New Multi,Reductie,Tijd,TijdKost,Mat,TijdViaMin,MatViaMin,MatBasis2,MatMultiplicant2,MatMin2,Waarde,WaardeViaMin,scKDtl + Set Multi=$J($$caoEvalExec(..Multiplicant),0,4) + Set Reductie=$J($$caoEvalExec(..Reductie),0,4) + Quit:($$$ISERR($G(scKDtl,$$$OK))) "ERROR" + Set Waarde=(Multi*..AParam)+..BParam + Set:(Waarde) Waarde=$S(Waarde>..Min:Waarde,1:..Min) + Set WaardeViaMin=(Waarde=..Min) + Set Waarde=Waarde*Reductie ; Reductie in rekening brengen ... + ;Set:($D(%KadObj)&&(Staffel=10)&&((..Multiplicant_..Reductie)["Staffel")) Waarde=Waarde*2 ; TEMP Staffelcorrectie voor Kaderdeur bij Staffel=10 + Set:($L(%KeyKDtl)) arKDtl(%KeyKDtl)=$LB(Waarde,Multi,Reductie) ; Debug voor de waarden van het KostDtl-object + ;Do caoBuildKostDtls ; Oude methode voor Debug-info + Quit Waarde +caoEvalExec(sExec) + Quit:($L(sExec,"`")=1) sExec + New RetVal + Do EXEC^vhRES($P(sExec,"`",1),$P(sExec,"`",2),"RetVal",,"caoTRAP^"_$ZN) ; RetVal wordt teruggekregen + Quit RetVal +caoTRAP + Set $ZTRAP="" + Set scKDtl=$$$ERROR($$$GeneralError,"Fout bij Kost-object") + New msg + Set msg="EXECUTE FOUT: "_sTyp_"`"_sExecTxt_"`"_$G(sParList) + Do WLFMT^vhDBG(msg,"A") + Do WLFMT^vhDBG("Bij .EM.KostTijd-object, oms="_..Omschrijving,"A") + Do WL^vhDBG("ErrorMsg bij EXECUTE : "_$$$CRLF_$ZE) + Do:($D(MApplication)) MApplication.MessageBox(msg) ; Foutmelding voor Makova + Set RetVal="" ; 0.001 + Quit 1 ; Doorgeven errormelding + /* +caoBuildKostDtls + If 0, Mat!Tijd,CalcObj Do + .Set CalcDtlObj=##class(Prod.GADef.emKadPrijsDtl).%New() + .Set CalcDtlObj.Groep=%this.KostGroep + .Set CalcDtlObj.KostCode=%this.ItemID ; voor array elementen ==> element_key + .Set CalcDtlObj.KostPlaats=%this.KostPlaats + .Set CalcDtlObj.SortNr=%this.Sort + .Set CalcDtlObj.Multiplicant=Multi + .Set CalcDtlObj.Reductor=Reductie + .Set CalcDtlObj.Tijd=$J(Reductie*Tijd,0,0) + .Set CalcDtlObj.TijdKost=TijdKost + .Set CalcDtlObj.TijdViaMin=TijdViaMin + .Set CalcDtlObj.Variabelen=$$EVALVAR(%this.Variabelen) + .Set VolgNr=VolgNr+1 + .Do CalcObj.Details.SetAt(CalcDtlObj,VolgNr) + .Do CalcDtlObj.%Close() + Quit +EVALVAR(Vars) + New Result,I,Var,Val + Set Result="" + For I=1:1:$L(Vars,";") Do + .Set Var=$P(Vars,";",I) + .Quit:'$L(Var) + .X "Set Val=$G("_Var_",""???"")" + .Set Result=Result_"; "_Var_"="_Val + Quit $E(Result,3,999) + */ + \ No newline at end of file Index: BL/PR/GA/TB/tmpDev.mac.rou =================================================================== diff -u --- BL/PR/GA/TB/tmpDev.mac.rou (revision 0) +++ BL/PR/GA/TB/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,111 @@ +#include PRGACNTs + /* + // +-+-+-+-+-+-+-+-+-+-+-+-+ + // + TBX - TandemBox + + // +-+-+-+-+-+-+-+-+-+-+-+-+ + */ + + ; Test-commands + Do KillAllObjects^%apiOBJ() + Set tb=##class(BL.PR.GA.TandemBox).%New() + Do tb.Initialize() + Quit + + +Initialize ; Parameters: geen + Quit +BuildLookup ; Parameters: .LookupArray + Quit +BuildSpecTabs ; Parameters: .SpecTabArray + Quit +BuildLookupLCode + Quit +BuildBeperkTPCode ; Parameters: .DSArray + Quit + +DesignFromLadeKleur() ; Parameters: LadeKleurID + Quit dsID +TPCodesFromDesign() ; Parameters: dsID + Quit $G(lbTPs) +CalcBreedteIntern() ; (CB,WD,OPVLLI,OPVLRE,MTIB) + Quit CB-(2*$G(WD))-($G(OPVLLI)+$G(OPVLRE))-$G(MTIB) +ImageCodeFromLC() ; Parameters: LC,BS + Quit ImgLC_"_"_$S($E(BS,1)="B":"BD", 1:BS) +CalcInfoDiverse() ; Parameters: WSOrdLn,lbArgs + Quit tmpLB +DFLBoxSideID() ; Parameters: blnBX,VoorkeurID + Quit $LI(lbIDs,1) + + + // ========================================================================================================================================= // + // Prod.GAData/GAMeta functions // + // ========================================================================================================================================= // +BTValuesFromProduct ; Parameters: Product,lbNaam + Quit +BTValuesToProduct ; Parameters: Product + Quit +BWValuesToProduct ; Parameters: Product,lbNaam + Quit +KMValuesToProduct ; Parameters: Product,GroepID,arValuesSrc + Quit + + + // ========================================================================================================================================= // + // %this functions // + // ========================================================================================================================================= // +BTValueSet ; Parameters: BTNaam,Waarde,.BTUpdates,PropagatieType + Quit +BTBeperkIDs() ; Parameters: Target,arValues,PrepareLUs + Quit lbIDs +BuildItemsOms() ; Parameters: BTNaam,lbIDs,SepID + Quit sOms +BuildItemsSort ; Parameters: BTUpdates,BTNaam,lbIDsOut,sOmsOut + Quit +BuildItemsSort2 ; (.BTUpdates,BTNaam,.lbIDsOut,.sOmsOut) + Quit + +BuildBTExtent ; Parameters: BTExtent ; BTExtent als .Local doorgeven + Quit +BuildBTDepend ; Parameters: BTDep,BTExtent ; BTDep en BTExtent als .Local doorgeven + Quit +BTClassSort() ; Volgorde is belangrijk voor het opleggen van de beperkingen + Quit "" + + // ========================================================================================================================================= // + // Kenm.Basis functions // + // ========================================================================================================================================= // + +SetSpecTabValueOLD ; Parameters: SpecTab + New lbSpec,STGroep,lbSpecKMSub,lbIDs + Set lbSpec=$G(..LookUp(SpecTab,"SpecTabs")) + If $LL(lbSpec) Do:($P($LI(lbSpec,1),"-",2)="B") + . Set STGroep=$P($LI(lbSpec,1),"-",1) + . ;Set lbSpecKMSub=..SpecTabs(STGroep,"B") + . Set lbIDs=..KMSpecItemsCalc(STGroep,SpecTab) + . Do:($LL(lbIDs)=1) ..BTValues.SetAt($LI(lbIDs,1),SpecTab) + Quit + +KMMergeDFLsForImport() ; Parameters: KMSpecs,KMDefaults + Quit KMSpecs +KMSpecItemsCalc() ; Parameters: GroepID,Kenmerk,lbNegeerKM + Quit lbIDs +KMFilterKenmerken ; Parameters: GroepID,KenmerkArray + Quit +KMPRLijstViaKenmerk ; Parameters: GroepID,Ref,KenmerkArray,IncludeUndefs + Quit +KMValuesViaPRLijst() ; Parameters: GroepID,Kenmerk,PRArray,Sorted + Quit ##class(Kenm.Basis.DataIndex).SPKenmerkWaardenLB(.GroepID,.Kenmerk,.PRArray,.Sorted) +SPKenmerkWaardenLB() ; Parameters: GroepID,Kenmerk,PRArray,Sorted + Quit lbValues + + +WFILE + k tmpAr + m tmpAr=^Kenm.Basis.DataDefinitieD ; (1000) + New OutF + Set OutF=##class(%Library.File).%New("\\WV_W2K\C$\Wim\wvTEST.txt") + w OutF.Open("WSN"),! + w "IsOpen:"_$S(OutF.IsOpen:"Open", 1:"Niks"),! + Do ArrayToTextW^vhLib("tmpAr",OutF) + Do OutF.%Close() + Quit \ No newline at end of file Index: Prod/GADef/KaderDeur/Templates.mac.rou =================================================================== diff -u --- Prod/GADef/KaderDeur/Templates.mac.rou (revision 0) +++ Prod/GADef/KaderDeur/Templates.mac.rou (revision 1152) @@ -0,0 +1,487 @@ +#include %occInclude + ; AUTHOR : Wim VERMEULEN + ; LOCATION : VAN HOECKE N.V. + ; LAST MODIFIED : 08/08/2005 + ; + ; THIS ROUTINE USES THE DATA FROM ...^Prod.GADef.KaderDeur.TemplateDB + ; AND CREATES THE TEMPLATE-OBJECTS (IN Prod.GADef.KaderDeur AND Res.PI.TemplateKader). + ; TO CREATE: RUN "START+KlantNr" SEPARATELY, or + ; RUN CLASS-METHOD "Fillobjects()" FROM THE Res.PI.TemplateKader CLASS TO CREATE ALL TEMPLATES + + +START3711 + Do START2523 ; Nieuw KLNr van TULP + Quit + /// 3711 is niet meer van toepassing! + /* + w "START3711 is begonnen. Even geduld... ",! + Kill ^CreateTemplatesLog(3711) + Set ^CreateTemplatesLog(3711)="Last Update: "_$ZDATETIME($H,3) + Do CreateFromDB("B1L1" , 3711, 1, "Bovenkastdeur links, greep onder") + Do CreateFromDB("B1R1" , 3711, 2, "Bovenkastdeur rechts, greep onder") + Do CreateFromDB("B1L1/1", 3711, 3, "Bovenkastdeur links, greep onder, tot 300mm") + Do CreateFromDB("B1R1/1", 3711, 4, "Bovenkastdeur rechts, greep onder, tot 300mm") + Do CreateFromDB("B1L5" , 3711, 5, "Onderkastdeur links, greep boven") + Do CreateFromDB("B1R5" , 3711, 6, "Onderkastdeur rechts, greep boven") + Do CreateFromDB("B1L5/1", 3711, 7, "Onderkastdeur links, greep boven, tot 300mm") + Do CreateFromDB("B1R5/1", 3711, 8, "Onderkastdeur rechts, greep boven, tot 300mm") + Do CreateFromDB("b12x-B11010L",3711, 9, "Kastdeur links, greep onder") + Do CreateFromDB("b12x-B11010R",3711, 10, "Kastdeur rechts, greep onder") + Do CreateFromDB("B2L1" , 3711, 11, "Kastdeur links draaiend") + Do CreateFromDB("B2R1" , 3711, 12, "Kastdeur rechts draaiend") + Do CreateFromDB("B2L1/1", 3711, 13, "Kastdeur links draaiend, tot 300mm") + Do CreateFromDB("B2R1/1", 3711, 14, "Kastdeur rechts draaiend, tot 300mm") + Do CreateFromDB("B3L1" , 3711, 15, "Kastdeur links draaiend") + Do CreateFromDB("B3R1" , 3711, 16, "Kastdeur rechts draaiend") + Do CreateFromDB("B3L1/1", 3711, 17, "Kastdeur links draaiend, tot 300mm") + Do CreateFromDB("B3R1/1", 3711, 18, "Kastdeur rechts draaiend, tot 300mm") + Do CreateFromDB("B4L1" , 3711, 19, "Kastdeur links draaiend") + Do CreateFromDB("B4R1" , 3711, 20, "Kastdeur rechts draaiend") + Do CreateFromDB("B4L1/1", 3711, 21, "Kastdeur links draaiend, tot 300mm") + Do CreateFromDB("B4R1/1", 3711, 22, "Kastdeur rechts draaiend, tot 300mm") + Do CreateFromDB("B4R3" , 3711, 23, "Kastdeur rechts draaiend") + Do CreateFromDB("B8L5" , 3711, 24, "Front deur links, greep boven, scharnier omlaag") + Do CreateFromDB("B8R5" , 3711, 25, "Front deur rechts, greep boven, scharnier omlaag") + Do CreateFromDB("B8L5/1", 3711, 26, "Front deur links, greep boven, scharnier omlaag, tot 300mm") + Do CreateFromDB("B8R5/1", 3711, 27, "Front deur rechts, greep boven, scharnier omlaag, tot 300mm") + Do CreateFromDB("S1L1" , 3711, 28, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S1L3" , 3711, 29, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S1L5" , 3711, 30, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S1L0" , 3711, 31, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S1R1" , 3711, 32, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S1R3" , 3711, 33, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S1R5" , 3711, 34, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S1R0" , 3711, 35, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S2L1" , 3711, 36, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S2L3" , 3711, 37, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S2L5" , 3711, 38, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S2L0" , 3711, 39, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S2R1" , 3711, 40, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S2R3" , 3711, 41, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S2R5" , 3711, 42, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S2R0" , 3711, 43, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S3L1" , 3711, 44, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S3L0" , 3711, 45, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S3R1" , 3711, 46, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S4R0" , 3711, 47, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S4L1" , 3711, 48, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S4L0" , 3711, 49, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S4R1" , 3711, 50, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S4R0" , 3711, 51, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("B5-2" , 3711, 52, "Klapdeur tot 600mm, breed prof, 1 steun rechts") + Do CreateFromDB("B5-2/1", 3711, 53, "Klapdeur tot 300mm, breed prof, 1 steun rechts") + Do CreateFromDB("B5-B" , 3711, 54, "Klapdeur vanaf 800mm, breed prof, 2 steunen") + Do CreateFromDB("B5-C" , 3711, 55, "Klapdeur vanaf 1000mm, breed prof, 3 scharn.") + Do CreateFromDB("B5-D" , 3711, 56, "Klapdeur vanaf 1000mm, breed prof, 4 scharn.") + Do CreateFromDB("S5-2" , 3711, 57, "Klapdeur tot 600mm, smal prof, 1 steun rechts") + Do CreateFromDB("S5-B" , 3711, 58, "Klapdeur vanaf 800mm, smal prof, 2 steunen") + Do CreateFromDB("S5-C" , 3711, 59, "Klapdeur vanaf 1000mm, smal prof, 3 scharn.") + Do CreateFromDB("S5-D" , 3711, 60, "Klapdeur vanaf 1000mm, smal prof, 4 scharn.") + Do CreateFromDB("B6-6" , 3711, 61, "LadeFront met 1 greep, tot 600mm") + Do CreateFromDB("B6-6/1", 3711, 62, "LadeFront met 1 greep, tot 300mm") + Do CreateFromDB("B6-B" , 3711, 63, "LadeFront met 2 grepen, vanaf 800mm") + Do CreateFromDB("B7-6" , 3711, 64, "LadeFront Hoog met 1 greep, tot 600mm") + Do CreateFromDB("B7-6/1", 3711, 65, "LadeFront Hoog met 1 greep, tot 300mm") + Do CreateFromDB("B7-B" , 3711, 66, "LadeFront Hoog met 2 grepen, vanaf 800mm") + Do CreateFromDB("B0-6" , 3711, 67, "LadeFront Hoog met 1 greep, tot 600mm") + Do CreateFromDB("B0-6/1", 3711, 68, "LadeFront Hoog met 1 greep, tot 300mm") + Do CreateFromDB("B0-B" , 3711, 69, "LadeFront Hoog met 2 grepen, vanaf 800mm") + Do CreateFromDB("B9-0" , 3711, 70, "Vaste Blende boven") + Do CreateFromDB("BAR3" , 3711, 71, "Kastdeur DDVKH rechts draaiend") + Do CreateFromDB("BAL3" , 3711, 72, "Kastdeur DDVKH links draaiend") + Do CreateFromDB("BBB" , 3711, 73, "Front BZLD kast, vanaf 800mm") + Do CreateFromDB("BB2" , 3711, 74, "Front BZLD kast, 600mm") + Do CreateFromDB("B124-D21011" , 3711, 75, "Klapdeur vanaf 950mm, breed prof, 2 steunen") + Do CreateFromDB("B12Z-D21011" , 3711, 76, "Klapdeur vanaf 950mm, breed prof, 2 steunen") + Do CreateFromDB("B124-D21010" , 3711, 77, "Klapdeur tot 900mm, breed prof, 2 steunen") + Do CreateFromDB("B12Z-D21010" , 3711, 78, "Klapdeur vanaf 650mm, breed prof, 2 steunen") + Do CreateFromDB("D21010x2Z" , 3711, 79, "Klapdeur vanaf 650mm, breed prof, 2 steunen") + Do CreateFromDB("B2B4-D21010" , 3711, 80, "Klapdeur tot 900mm, breed prof, 2 steunen") + Do CreateFromDB("B12Z-D50010" , 3711, 81, "Klapdeur vanaf 650mm") + Do CreateFromDB("B2F4-F11010" , 3711, 82, "Front korflade met 2 grepen, vanaf 650mm") + Do CreateFromDB("B16Z-F11010" , 3711, 83, "Front korflade met 1 greep, vanaf 650mm") + Do CreateFromDB("F11010x6Z" , 3711, 84, "Front korflade met 1 greep, vanaf 650mm") + Do CreateFromDB("B114-B11010L" , 3711, 85, "Kastdeur links, greep onder") + Do CreateFromDB("B114-B11010R" , 3711, 86, "Kastdeur rechts, greep onder") + Do CreateFromDB("S110-B11010L" , 3711, 87, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S130-B11010L" , 3711, 88, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S150-B11010L" , 3711, 89, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S100-B11010L" , 3711, 90, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S110-B11010R" , 3711, 91, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S130-B11010R" , 3711, 92, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S150-B11010R" , 3711, 93, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S100-B11010R" , 3711, 94, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S110-C11010L" , 3711, 95, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S130-C11010L" , 3711, 96, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S150-C11010L" , 3711, 97, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S100-C11010L" , 3711, 98, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S110-C11010R" , 3711, 99, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S130-C11010R" , 3711,100, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S150-C11010R" , 3711,101, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S100-C11010R" , 3711,102, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S120-D11010" , 3711,103, "Klapdeur tot 600mm, smal prof, 1 steun rechts") + Do CreateFromDB("S120-D21010" , 3711,104, "Klapdeur tot 900mm, smal prof, 2 steunen") + Do CreateFromDB("S120-D21011" , 3711,105, "Klapdeur vanaf 900mm, smal prof, 2 steunen") + Do CreateFromDB("B2B4-D21011" , 3711,106, "Klapdeur vanaf 950mm, breed prof, 2 steunen") + Do CreateFromDB("S120-D21010" , 3711,104, "Klapdeur tot 900mm, smal prof, 2 steunen") + w "START3711 is uitgevoerd",! + Quit + */ + +START2523 + w "START2523 is begonnen. Even geduld... ",! + Kill ^CreateTemplatesLog(2523) + Set ^CreateTemplatesLog(2523)="Last Update: "_$ZDATETIME($H,3) + /* + Do CreateFromDB("B1L1" , 2523, 1, "Bovenkastdeur links, greep onder") + Do CreateFromDB("B1R1" , 2523, 2, "Bovenkastdeur rechts, greep onder") + Do CreateFromDB("B1L1/1", 2523, 3, "Bovenkastdeur links, greep onder, tot 300mm") + Do CreateFromDB("B1R1/1", 2523, 4, "Bovenkastdeur rechts, greep onder, tot 300mm") + Do CreateFromDB("B1L5" , 2523, 5, "Onderkastdeur links, greep boven") + Do CreateFromDB("B1R5" , 2523, 6, "Onderkastdeur rechts, greep boven") + Do CreateFromDB("B1L5/1", 2523, 7, "Onderkastdeur links, greep boven, tot 300mm") + Do CreateFromDB("B1R5/1", 2523, 8, "Onderkastdeur rechts, greep boven, tot 300mm") + Do CreateFromDB("b12x-B11010L",2523, 9, "Kastdeur links, greep onder") + Do CreateFromDB("b12x-B11010R",2523, 10, "Kastdeur rechts, greep onder") + Do CreateFromDB("B2L1" , 2523, 11, "Kastdeur links draaiend") + Do CreateFromDB("B2R1" , 2523, 12, "Kastdeur rechts draaiend") + Do CreateFromDB("B2L1/1", 2523, 13, "Kastdeur links draaiend, tot 300mm") + Do CreateFromDB("B2R1/1", 2523, 14, "Kastdeur rechts draaiend, tot 300mm") + Do CreateFromDB("B3L1" , 2523, 15, "Kastdeur links draaiend") + Do CreateFromDB("B3R1" , 2523, 16, "Kastdeur rechts draaiend") + Do CreateFromDB("B3L1/1", 2523, 17, "Kastdeur links draaiend, tot 300mm") + Do CreateFromDB("B3R1/1", 2523, 18, "Kastdeur rechts draaiend, tot 300mm") + Do CreateFromDB("B4L1" , 2523, 19, "Kastdeur links draaiend") + Do CreateFromDB("B4R1" , 2523, 20, "Kastdeur rechts draaiend") + Do CreateFromDB("B4L1/1", 2523, 21, "Kastdeur links draaiend, tot 300mm") + Do CreateFromDB("B4R1/1", 2523, 22, "Kastdeur rechts draaiend, tot 300mm") + Do CreateFromDB("B4R3" , 2523, 23, "Kastdeur rechts draaiend") + Do CreateFromDB("B8L5" , 2523, 24, "Front deur links, greep boven, scharnier omlaag") + Do CreateFromDB("B8R5" , 2523, 25, "Front deur rechts, greep boven, scharnier omlaag") + Do CreateFromDB("B8L5/1", 2523, 26, "Front deur links, greep boven, scharnier omlaag, tot 300mm") + Do CreateFromDB("B8R5/1", 2523, 27, "Front deur rechts, greep boven, scharnier omlaag, tot 300mm") + Do CreateFromDB("S1L1" , 2523, 28, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S1L3" , 2523, 29, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S1L5" , 2523, 30, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S1L0" , 2523, 31, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S1R1" , 2523, 32, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S1R3" , 2523, 33, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S1R5" , 2523, 34, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S1R0" , 2523, 35, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S2L1" , 2523, 36, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S2L3" , 2523, 37, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S2L5" , 2523, 38, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S2L0" , 2523, 39, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S2R1" , 2523, 40, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S2R3" , 2523, 41, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S2R5" , 2523, 42, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S2R0" , 2523, 43, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S3L1" , 2523, 44, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S3L0" , 2523, 45, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S3R1" , 2523, 46, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S4R0" , 2523, 47, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S4L1" , 2523, 48, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S4L0" , 2523, 49, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S4R1" , 2523, 50, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S4R0" , 2523, 51, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("B5-2" , 2523, 52, "Klapdeur tot 600mm, breed prof, 1 steun rechts") + Do CreateFromDB("B5-2/1", 2523, 53, "Klapdeur tot 300mm, breed prof, 1 steun rechts") + Do CreateFromDB("B5-B" , 2523, 54, "Klapdeur vanaf 800mm, breed prof, 2 steunen") + Do CreateFromDB("B5-C" , 2523, 55, "Klapdeur vanaf 1000mm, breed prof, 3 scharn.") + Do CreateFromDB("B5-D" , 2523, 56, "Klapdeur vanaf 1000mm, breed prof, 4 scharn.") + Do CreateFromDB("S5-2" , 2523, 57, "Klapdeur tot 600mm, smal prof, 1 steun rechts") + Do CreateFromDB("S5-B" , 2523, 58, "Klapdeur vanaf 800mm, smal prof, 2 steunen") + Do CreateFromDB("S5-C" , 2523, 59, "Klapdeur vanaf 1000mm, smal prof, 3 scharn.") + Do CreateFromDB("S5-D" , 2523, 60, "Klapdeur vanaf 1000mm, smal prof, 4 scharn.") + Do CreateFromDB("B6-6" , 2523, 61, "LadeFront met 1 greep, tot 600mm") + Do CreateFromDB("B6-6/1", 2523, 62, "LadeFront met 1 greep, tot 300mm") + Do CreateFromDB("B6-B" , 2523, 63, "LadeFront met 2 grepen, vanaf 800mm") + Do CreateFromDB("B7-6" , 2523, 64, "LadeFront Hoog met 1 greep, tot 600mm") + Do CreateFromDB("B7-6/1", 2523, 65, "LadeFront Hoog met 1 greep, tot 300mm") + Do CreateFromDB("B7-B" , 2523, 66, "LadeFront Hoog met 2 grepen, vanaf 800mm") + Do CreateFromDB("B0-6" , 2523, 67, "LadeFront Hoog met 1 greep, tot 600mm") + Do CreateFromDB("B0-6/1", 2523, 68, "LadeFront Hoog met 1 greep, tot 300mm") + Do CreateFromDB("B0-B" , 2523, 69, "LadeFront Hoog met 2 grepen, vanaf 800mm") + Do CreateFromDB("B9-0" , 2523, 70, "Vaste Blende boven") + Do CreateFromDB("BAR3" , 2523, 71, "Kastdeur DDVKH rechts draaiend") + Do CreateFromDB("BAL3" , 2523, 72, "Kastdeur DDVKH links draaiend") + Do CreateFromDB("BBB" , 2523, 73, "Front BZLD kast, vanaf 800mm") + Do CreateFromDB("BB2" , 2523, 74, "Front BZLD kast, 600mm") + Do CreateFromDB("B124-D21011" , 2523, 75, "Klapdeur vanaf 950mm, breed prof, 2 steunen") + Do CreateFromDB("B12Z-D21011" , 2523, 76, "Klapdeur vanaf 950mm, breed prof, 2 steunen") + Do CreateFromDB("B124-D21010" , 2523, 77, "Klapdeur tot 900mm, breed prof, 2 steunen") + Do CreateFromDB("B12Z-D21010" , 2523, 78, "Klapdeur vanaf 650mm, breed prof, 2 steunen") + Do CreateFromDB("D21010x2Z" , 2523, 79, "Klapdeur vanaf 650mm, breed prof, 2 steunen") + Do CreateFromDB("B2B4-D21010" , 2523, 80, "Klapdeur tot 900mm, breed prof, 2 steunen") + Do CreateFromDB("B12Z-D50010" , 2523, 81, "Klapdeur vanaf 650mm") + Do CreateFromDB("B2F4-F11010" , 2523, 82, "Front korflade met 2 grepen, vanaf 650mm") + Do CreateFromDB("B16Z-F11010" , 2523, 83, "Front korflade met 1 greep, vanaf 650mm") + Do CreateFromDB("F11010x6Z" , 2523, 84, "Front korflade met 1 greep, vanaf 650mm") + Do CreateFromDB("B114-B11010L" , 2523, 85, "Kastdeur links, greep onder") + Do CreateFromDB("B114-B11010R" , 2523, 86, "Kastdeur rechts, greep onder") + Do CreateFromDB("S110-B11010L" , 2523, 87, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S130-B11010L" , 2523, 88, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S150-B11010L" , 2523, 89, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S100-B11010L" , 2523, 90, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S110-B11010R" , 2523, 91, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S130-B11010R" , 2523, 92, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S150-B11010R" , 2523, 93, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S100-B11010R" , 2523, 94, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S110-C11010L" , 2523, 95, "Linkerdeur, smal profiel, knop onder") + Do CreateFromDB("S130-C11010L" , 2523, 96, "Linkerdeur, smal profiel, knop midden") + Do CreateFromDB("S150-C11010L" , 2523, 97, "Linkerdeur, smal profiel, knop boven") + Do CreateFromDB("S100-C11010L" , 2523, 98, "Linkerdeur, smal profiel, zonder knop") + Do CreateFromDB("S110-C11010R" , 2523, 99, "Rechterdeur, smal profiel, knop onder") + Do CreateFromDB("S130-C11010R" , 2523,100, "Rechterdeur, smal profiel, knop midden") + Do CreateFromDB("S150-C11010R" , 2523,101, "Rechterdeur, smal profiel, knop boven") + Do CreateFromDB("S100-C11010R" , 2523,102, "Rechterdeur, smal profiel, zonder knop") + Do CreateFromDB("S120-D11010" , 2523,103, "Klapdeur tot 600mm, smal prof, 1 steun rechts") + Do CreateFromDB("S120-D21010" , 2523,104, "Klapdeur tot 900mm, smal prof, 2 steunen") + Do CreateFromDB("S120-D21011" , 2523,105, "Klapdeur vanaf 900mm, smal prof, 2 steunen") + Do CreateFromDB("B2B4-D21011" , 2523,106, "Klapdeur vanaf 950mm, breed prof, 2 steunen") + */ + ; New items to append: + ;Do CreateFromDB("S120-D21010" , 2523,104, "Klapdeur tot 900mm, smal prof, 2 steunen") + w "START2523 is uitgevoerd",! + Quit + + +CreateFromDB(PICode,KlantID,Sort,Omschrijving) + Set blnChangePropts=0 ; Default="0". Switch to "1" to change some properties on the Template KadObj, without creating new objects + If blnChangePropts Do + . Quit:($G(PICode)="") + . New KadObj,PIObj,ItemID + . Set ItemID=PICode + . Set PIObj=$$CreatePITemplate(ItemID,PICode,,$G(KlantID),$G(Sort),$G(Omschrijving)) + . Set KadObj=PIObj.GADefTemplate + . ; Make Changes to KadObj + . ; + . Set PIObj.Sort=Sort + . ; + . Set sc=KadObj.%Save() + . w:($$$ISERR(sc)) "KadObj.%Save : "_$$ParseStatus^vhLib(sc) + . Set sc=PIObj.%Save() + . w:($$$ISERR(sc)) "PIObj.%Save : "_$$ParseStatus^vhLib(sc) + . Set PIObj="" + . w "Aanpassing voor "_PICode_" uitgevoerd.",! + Quit:(blnChangePropts) + + ; Creates the KadObj and the PIObj. + Quit:($G(PICode)="") + New KadObj,PIObj,ItemID + Set KadObj=##class(Prod.GADef.KaderDeur).%New() + ; FillPropts, FillBeslag and FillBoringen + Do @("T"_KlantID_"xx"_$$ReplaceCode(PICode)_"^Prod.GADef.KaderDeur.TemplateDB(.KadObj)") + Set KadObj.TemplateUsed=PICode + Do KadObj.%Save() + ; Check that KadObj is correctly saved. + Set ^CreateTemplatesLog(KlantID,PICode)=$S(KadObj.%Id()'="":"ID: "_KadObj.%Id(), 1:"KaderdeurID kon niet gegenereerd worden. Creatie Template afgebroken.") + Quit:(KadObj.%Id()="") + ; Create PI.TemplateKader-object + Set ItemID=PICode + Set PIObj=$$CreatePITemplate(ItemID,PICode,KadObj.%Id(),$G(KlantID),$G(Sort),$G(Omschrijving)) + Do PIObj.%Save() + Do PIObj.%Close() + Do KadObj.%Close() + Quit + +ReplaceCode(strText) + New FKey + For FKey="-;MIN", "+;PLUS", "/;SLASH", "\;BSLASH" Do + . Do ReplaceSubString(.strText, $P(FKey,";",1), $P(FKey,";",2)) + Quit strText + +ReplaceSubString(strText,strFind,strNew) + ; Replaces all in by + ; strText should be passed by Reference !!! + ; + New Q,P,Find,Variable + For Quit:strText'[strFind Do + . Set Q=$FIND(strText,strFind)-1 + . Set P=Q-$L(strFind)+1 + . Set $E(strText,P,Q)=strNew + Quit "Pass First Parameter by Reference!" + + +CreatePITemplate(ItemID,PICode,GADefOID,KlantID,Sort,Omschrijving) + ; Returns the new PIObj + Quit:($G(ItemID)="") + New FullID + Set FullID=##class(Res.PI.Definitie).IDViaNaam("TemplateKader")_"||"_ItemID + If ##class(Res.PI.TemplateKader).%ExistsId(FullID) Do + . Set PIObj=##class(Res.PI.TemplateKader).%OpenId(FullID) + Else Do + . Set PIObj=##class(Res.PI.TemplateKader).%New() + . Do FillPITemplate(.PIObj,ItemID,$G(PICode),,$G(KlantID),$G(Sort),$G(Omschrijving)) + Do:($G(GADefOID)'="") PIObj.GADefTemplateSetObjectId(GADefOID) + Quit PIObj + +FillPITemplate(PIObj,ItemID,PICode,GADefOID,KlantID,Sort,Omschrijving) + ; PIObj passed by Reference! + Quit:('$G(PIObj)) + Quit:($G(ItemID)="") + Do PIObj.TabelIDSetObjectId(##class(Res.PI.Definitie).IDViaNaam("TemplateKader")) + Set PIObj.ItemID=ItemID + Set PIObj.PICode=$S('$G(PICode):ItemID,1:PICode) + Set:($G(Omschrijving)'="") PIObj.Omschrijving=Omschrijving + Set:($G(Sort)'="") PIObj.Sort=Sort + Do:($G(GADefOID)'="") PIObj.GADefTemplateSetObjectId(GADefOID) + Do:($G(KlantID)'="") PIObj.KlantSetObjectId(KlantID) + Quit + + +FillKDBeslag(KadObj,BeslagKey,BeslagTypeID,lstPosities) + ; KadObj passed by Reference! + ; has the following structure ("[]" means OPTIONAL) : + ; "RelLPos[@LPos];AfRand[;PosKey1]\RelLPos2[@LPos2];[AfRand2][;PosKey2]\RelLPos3[@LPos3];[AfRand3][;PosKey3]" + ; - if PosKey_I is omitted, it is automatically calculated by "Beslag.Posities.Count()+1" + ; - if AfRand is omitted, it is reused from previous "Beslag.Positie" + ; + Quit:($G(BeslagKey)="") + Quit:($G(BeslagTypeID)="") + Quit:($G(lstPosities)="") + New emBeslag,I,emBeslagPos,TabelBeslag,PosI,LPos,AfRand,PosKey + Set TabelBeslag=##class(Res.PI.Definitie).IDViaNaam("Beslag") + Set AfRand="" + Set emBeslag=##class(Prod.GADef.emKadBeslag).%New() + Do emBeslag.BeslagSetObjectId(TabelBeslag_"||"_BeslagTypeID) + For I=1:1 Quit:('$L($P(lstPosities,"\",I))) Do + . Set PosI=$P(lstPosities,"\",I) + . Set LPos=$P(PosI,";") ; RelLengtePos_@_LengtePos + . Set:($P(PosI,";",2)'="") AfRand=$P(PosI,";",2) ; AfstandRand (Re-use previous when empty) + . Set PosKey=$P(PosI,";",3) ; PosKey (Count #Posities when empty) + . Set:(PosKey="") PosKey=emBeslag.Positie.Count()+1 ; New Key incremented by 1 + . Quit:($P(LPos,"@",1)_$P(LPos,"@",2)="") + . Set emBeslagPos=##class(Prod.GADef.emKadBeslagPos).%New() + . Set emBeslagPos.RelLengtePos=$P(LPos,"@",1) + . Set emBeslagPos.LengtePos=$P(LPos,"@",2) + . Set:(AfRand'="") emBeslagPos.AfstandRand=AfRand + . Do emBeslag.Positie.SetAt(emBeslagPos,PosKey) + . Do emBeslagPos.%Close() + Do KadObj.Beslag.SetAt(emBeslag,BeslagKey) + Do emBeslag.%Close() + Quit + +FillKDBoring(KadObj,XCode,YCode,Diam,BoringType,BoorDiepte,GlasDiam,ZCode,BKey,CncID) + ; KadObj passed by Reference! + ; XCode,YCode,ZCode constist of "RelPos_@_Pos" + Quit:($G(XCode)="") + Quit:($G(YCode)="") + Quit:($G(Diam)="") + Quit:(+Diam=0) + Quit:($G(BoorDiepte)="") + Quit:($G(BoringType)="") + New emBoring + Set emBoring=##class(Prod.GADef.emKadBoring).%New() + Set emBoring.RelXPos=$P(XCode,"@",1) + Set emBoring.RelYPos=$P(YCode,"@",1) + Set emBoring.XPos=$P(XCode,"@",2) + Set emBoring.YPos=$P(YCode,"@",2) + Set emBoring.BoorDiameter=$P(Diam,"+",1) + Set:($P(Diam,"+",2)'="") emBoring.AfschuinDiameter=$P(Diam,"+",2) + Set emBoring.BoringType=BoringType + Set emBoring.BoorDiepte=$S(emBoring.BoorDiameter<0:0, 1:BoorDiepte) ; Puntboring (diam<0) ==> BoorDiepte=0 + Set:($G(GlasDiam)) emBoring.BoorGlasDiameter=GlasDiam + Set:($G(ZCode)) emBoring.RelZPos=$P(ZCode,"@",1) + Set:($G(ZCode)) emBoring.ZPos=$P(ZCode,"@",2) + Set:($D(CncID)) emBoring.CncID=CncID + Set BKey=$E($G(BKey,"X"),1) + Set BKey=$S(BKey?1A:BKey, 1:"X") + Do KadObj.Boringen.SetAt(emBoring,BKey_$TR($J($$ArrCount(KadObj.Boringen,BKey)+1, 2), " ", "0")) + ;Do KadObj.Boringen.SetAt(emBoring,$S(BKey?1A:BKey, 1:"X")_$TR($J(KadObj.Boringen.Count()+1, 2), " ", "0")) + ;Do KadObj.Boringen.SetAt(emBoring,KadObj.Boringen.Count()+1) + Do emBoring.%Close() + Quit + +ArrCount(objArray,StartKey) + New Num,Key + Set StartKey=$G(StartKey,"") + Set Num=0 + Set Key="" + For Do objArray.GetNext(.Key) Quit:(Key="") Do + . Set:($E(Key,1,$L(StartKey))=StartKey) Num=Num+1 + Quit Num + +FillKDPropts(KadObj,ToepasID,OphangPID,ProfielTypeID,Hoogte,Breedte,VullingID,VullingExtras,Gemonteerd,Verpakking,TemplateRoutine) + ; KadObj passed by Reference! + New TabelProfType,TabelProfAfw,TabelVul,TabelVulExtra,TabelToepas,TabelOphang + Set TabelProfType=##class(Res.PI.Definitie).IDViaNaam("ProfType") + Set TabelProfAfw=##class(Res.PI.Definitie).IDViaNaam("ProfAfw") + Set TabelVul=##class(Res.PI.Definitie).IDViaNaam("Vulling") + Set TabelVulExtra=##class(Res.PI.Definitie).IDViaNaam("VullingExtra") + Set TabelToepas=##class(Res.PI.Definitie).IDViaNaam("Toepas") + Set TabelOphang=##class(Res.PI.Definitie).IDViaNaam("OphangPlaats") + + Do:($G(ToepasID)'="") KadObj.ToepassingSetObjectId(TabelToepas_"||"_ToepasID) + Do:($G(OphangPID)'="") KadObj.OphangPlaatsSetObjectId(TabelOphang_"||"_OphangPID) + Do:($G(ProfielTypeID)'="") KadObj.ProfTypeSetObjectId(TabelProfType_"||"_$P(ProfielTypeID,"-")) + Do:($G(ProfielTypeID)'="") KadObj.ProfAfwSetObjectId($S($P(ProfielTypeID,"-",2)'="":TabelProfAfw_"||"_ProfielTypeID,1:"")) + Set:($G(Hoogte)'="") KadObj.Hoogte=Hoogte + Set:($G(Breedte)'="") KadObj.Breedte=Breedte + Set:($G(Gemonteerd)'="") KadObj.Gemonteerd=Gemonteerd + Set:($G(Verpakking)'="") KadObj.Verpakking=Verpakking + Set:($G(TemplateRoutine)'="") KadObj.TemplateRoutine=TemplateRoutine + Do:($G(VullingID)'="") SetVulling(.KadObj,VullingID,$G(VullingExtras)) + Quit + +SetVulling(KadObj,VullingID,VullingExtras) + ; KadObj passed by Reference! + New emVulling,I + Quit:(VullingID="") + Set VullingExtras=$G(VullingExtras,"") + Set emVulling=##class(Prod.GADef.emKadVulling).%New() + Do emVulling.VullingSetObjectId(TabelVul_"||"_VullingID) + For I=1:1 Quit:('$L($P(VullingExtras,";",I))) Do + . Do emVulling.VullingExtra.InsertObjectId(##class(Res.PI.Definitie).IDViaNaam("VullingExtra")_"||"_$P(VullingExtras,";",I)) + Set KadObj.Vulling=emVulling + Do emVulling.%Close() + Quit + + + + + + +CreateCompact(Toepas,OphangP,PICode,KlantID,Sort,Omschrijving,TemplateRoutine) + ; Another way to create the TemplateKader and Kader-objects + ; Not the best way to create the objects. It Better to use CreateFromDB (called by "START...") + ; Creates the KadObj and the PIObj. + ; KlantID,Sort and Omschrijving are optional parameters. + Quit:($G(PICode)="") + New KadObj,PIObj,ItemID + Set KadObj=##class(Prod.GADef.KaderDeur).%New() + Do FillKDPropts(.KadObj,$G(Toepas),$G(OphangP),,,,,,"KV","K",$G(TemplateRoutine)) + Do KadObj.%Save() + ; Check that KadObj is correctly saved. + Write:(KadObj.%Id()="") "KaderdeurID kon niet gegenereerd worden. Creatie Template afgebroken." + Quit:(KadObj.%Id()="") + Do DumpObject^%apiOBJ(KadObj) + + Set ItemID=PICode + Set PIObj=$$CreatePITemplate(ItemID,PICode,KadObj.%Id(),$G(KlantID),$G(Sort),$G(Omschrijving)) + Do PIObj.%Save() + Do DumpObject^%apiOBJ(PIObj) + Do PIObj.%Close() + Do KadObj.%Close() + Quit + +ExtendFT(%this,TemplateID,param1,param2,param3,param4,param5) + ; + ; !!! THIS ROUTINE HAS BEEN PLACED IN THE OBJECT'S METHOD (IN OBJECT ARCHTITECT) !!! + ; + ; Extends the KadObj with the dynamic properties from the template + Quit:(TemplateID="") + If $E(TemplateID,1,3)="PIT" Do + . New PITemplate + . Set PITemplate=##class(Res.PI.TemplateKader).%OpenId(##class(Res.PI.Definitie).IDViaNaam("TemplateKader")_"||"_$E(TemplateID,4,999)) + . Set TemplateID=PITemplate.GADefTemplateGetObjectId() + . Do PITemplate.%Close() + New Templ,RoutineName + Set Templ=##CLASS(Prod.GADef.KaderDeur).%OpenId(TemplateID) + Set RoutineName=Templ.TemplateRoutine + ;Do Templ.%Close() + Quit:('$L(RoutineName)) + ;Do @(RoutineName_"(%this,TemplateID,$G(param1),$G(param2),$G(param3),$G(param4),$G(param5))") + Do @(RoutineName_"(%this,Templ,$G(param1),$G(param2),$G(param3),$G(param4),$G(param5))") + Do Templ.%Close() + Quit \ No newline at end of file Index: Prod/Klas/Klas/tmpDev.mac.rou =================================================================== diff -u --- Prod/Klas/Klas/tmpDev.mac.rou (revision 0) +++ Prod/Klas/Klas/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,178 @@ +#include %VHMacro + +ProductTreeCodeFetch(Row,AtEnd) ; Row en AtEnd als .locals doorgeven + Set Row="" + Set AtEnd=0 + Set iPTreeLines=$O(arPTreeLines(iPTreeLines)) + If iPTreeLines="" Set AtEnd=1 Quit + Set Row=$LB(iPTreeLines,$G(arPTreeLines(iPTreeLines))) + Quit + +ProductTreeCodeClose + Kill arPTreeLines + Kill iPTreeLines + Quit + +ProductTreeCodeExecute ; Parameters: OutputMode + New tmpAr + Set Taal=$G(Taal,"N") + Kill tmpAr + Do ptcBuildItemsArray(.tmpAr) + Kill arPTreeLines + Do ptcItemsToLinesCVT(.tmpAr,.arPTreeLines) + Set iPTreeLines="" + Quit +ptcBuildItemsArray(arItems) ; arItems als .local doorgeven + // arLines("01HG","01GR","01SG")=$LB(FullID,OmsN,OmsF) + /* + ; sSQLHG = "SELECT SortSleutel," & sOMSFld & ", ECType FROM Prod_Klas.HoofdGroep, Prod_Klas.KLAS WHERE KKEY=KLAS AND ECTYPE<>0 ORDER BY SortSleutel" + ; sSQLGR = "SELECT SortSleutel," & sOMSFld & ", ECType FROM Prod_Klas.Groep, Prod_Klas.KLAS WHERE KKEY=KLAS AND ECTYPE<>0 ORDER BY SortSleutel" + ; sSQLSG = "SELECT SortSleutel," & sOMSFld & ", ECType FROM Prod_Klas.SubGroep, Prod_Klas.KLAS WHERE KKEY=KLAS AND ECTYPE<>0 ORDER BY SortSleutel" + */ + New i,crsHG,crsGR,crsSG,pID,SortKey,OmsN,OmsF,ECType + Kill arItems + ;w "building array ... ",! + ; Loop through all HG's + &sql(DECLARE crsHG CURSOR FOR + SELECT PGroep.ID,PGroep.SortSleutel,PGroep.OmschrijvingN,PGroep.OmschrijvingF,PKlas.ECType INTO :pID,:SortKey,:OmsN,:OmsF,:ECType + FROM Prod_Klas.HoofdGroep PGroep, Prod_Klas.Klas PKlas + WHERE PKlas.KKey=PGroep.Klas AND PKlas.ECType>0 + ORDER BY PGroep.SortSleutel) + &sql(OPEN crsHG) + For &sql(FETCH crsHG) Quit:SQLCODE Do ptcAddToArrayHG + &sql(CLOSE crsHG) + ; Loop through all GR's + &sql(DECLARE crsGR CURSOR FOR + SELECT PGroep.ID,PGroep.SortSleutel,PGroep.OmschrijvingN,PGroep.OmschrijvingF,PKlas.ECType INTO :pID,:SortKey,:OmsN,:OmsF,:ECType + FROM Prod_Klas.Groep PGroep, Prod_Klas.Klas PKlas + WHERE PKlas.KKey=PGroep.Klas AND PKlas.ECType>0 + ORDER BY PGroep.SortSleutel) + &sql(OPEN crsGR) + For &sql(FETCH crsGR) Quit:SQLCODE Do ptcAddToArrayGR + &sql(CLOSE crsGR) + ; Loop through all SG's + &sql(DECLARE crsSG CURSOR FOR + SELECT PGroep.ID,PGroep.SortSleutel,PGroep.OmschrijvingN,PGroep.OmschrijvingF,PKlas.ECType INTO :pID,:SortKey,:OmsN,:OmsF,:ECType + FROM Prod_Klas.SubGroep PGroep, Prod_Klas.Klas PKlas + WHERE PKlas.KKey=PGroep.Klas AND PKlas.ECType>0 + ORDER BY PGroep.SortSleutel) + &sql(OPEN crsSG) + For &sql(FETCH crsSG) Quit:SQLCODE Do ptcAddToArraySG + &sql(CLOSE crsSG) + ;w "done.",! + ;w $$$ArrayTT("arLines") + Quit +ptcAddToArrayHG + Set arItems($E(SortKey,1,4))=$LB(SortKey,OmsN) ; ,OmsF) + Quit +ptcAddToArrayGR + Set:($D(arItems($E(SortKey,1,4)))) arItems($E(SortKey,1,4),$E(SortKey,5,9))=$LB(SortKey,OmsN) ; ,OmsF) + Quit +ptcAddToArraySG + Set:($D(arItems($E(SortKey,1,4),$E(SortKey,5,9)))) arItems($E(SortKey,1,4),$E(SortKey,5,9),$E(SortKey,10,14))=$LB(SortKey,OmsN) ; ,OmsF) + Quit + +ptcItemsToLinesCVT(arItems,arLines) ; arItems en arLines als .local doorgeven +#define INC(%v) $INCREMENT(%v) +#define liID 1 + ;Set arPTreeLines(1)="Test lijn 1" + ;Set arPTreeLines(2)="Test lijn 2" + New i,OmsLI,iHG,iGR,iSG + Set i=0 + Set OmsLI=$S(Taal="F":3, 1:2) + Set (iHG,iGR,iSG)="" + Set arLines($$$INC(i))="" + Do ptcCVTLoopHG + Set arLines($$$INC(i))="" + Quit +ptcCVTLoopHG + For Set iHG=$O(arItems(iHG)) Quit:(iHG="") Do + . Set arLines($$$INC(i))=" " + . Set arLines($$$INC(i))=" "_$LG(arItems(iHG),OmsLI)_"" + . If $$$aHasSubNodes(arItems(iHG)) Do + .. Set arLines($$$INC(i))=" oi(this)" + .. Set arLines($$$INC(i))=" oi(this)" + .. Set arLines($$$INC(i))=" " + .. Set arLines($$$INC(i))=" " + .. Do ptcCVTLoopGR + .. Set arLines($$$INC(i))=" " + .. Set arLines($$$INC(i))=" " + . Else Do + .. Set arLines($$$INC(i))=" "_$LG(arItems(iHG),$$$liID)_"" + .. Set arLines($$$INC(i))=" si('***')" + . Set arLines($$$INC(i))=" " + Quit +ptcCVTLoopGR +#define IndentGR $C(9,9,9,9) + For Set iGR=$O(arItems(iHG,iGR)) Quit:(iGR="") Do + . Set arLines($$$INC(i))=$$$IndentGR_"" + . Set arLines($$$INC(i))=$$$IndentGR_" "_$LG(arItems(iHG,iGR),OmsLI)_"" + . If $$$aHasSubNodes(arItems(iHG,iGR)) Do + .. Set arLines($$$INC(i))=$$$IndentGR_" oi(this)" + .. Set arLines($$$INC(i))=$$$IndentGR_" oi(this)" + .. Set arLines($$$INC(i))=$$$IndentGR_" " + .. Set arLines($$$INC(i))=$$$IndentGR_" " + .. Do ptcCVTLoopSG + .. Set arLines($$$INC(i))=$$$IndentGR_" " + .. Set arLines($$$INC(i))=$$$IndentGR_" " + . Else Do + .. Set arLines($$$INC(i))=$$$IndentGR_" "_$LG(arItems(iHG,iGR),$$$liID)_"" + .. Set arLines($$$INC(i))=$$$IndentGR_" si('***')" + . Set arLines($$$INC(i))=$$$IndentGR_"" + Quit +ptcCVTLoopSG +#define IndentSG $C(9,9,9,9,9,9,9) + For Set iSG=$O(arItems(iHG,iGR,iSG)) Quit:(iSG="") Do + . Set arLines($$$INC(i))=$$$IndentSG_"" + . Set arLines($$$INC(i))=$$$IndentSG_" "_$LG(arItems(iHG,iGR,iSG),OmsLI)_"" + . Set arLines($$$INC(i))=$$$IndentSG_" "_$LG(arItems(iHG,iGR,iSG),$$$liID)_"" + . Set arLines($$$INC(i))=$$$IndentSG_" si('***')" + . Set arLines($$$INC(i))=$$$IndentSG_"" + Quit + + /* + + + Scharnier + oi(this) + oi(this) + + + + Mini + 01CH01MIN + si('***') + + + Normaal + oi(this) + oi(this) + + + + Middenklasse + 01CH02NOR01MID + si('***') + + + Glasdeur + 01CH02NOR04GLA + si('***') + + + + + + Groothoek + 01CH03GHK + si('***') + + + Object + 01CH05OBJ + si('***') + + + + + */ \ No newline at end of file Index: BL/Prod/GAData/Build/tmpDev.mac.rou =================================================================== diff -u --- BL/Prod/GAData/Build/tmpDev.mac.rou (revision 0) +++ BL/Prod/GAData/Build/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,212 @@ +#include BL.Prod.GAData + +TBXCalcItems(CalcType) ; Parameters: CalcType + Quit + + /* * / + // Test version - DEPRECATED !!! + + + #define CreateIfActief(%v) Calc%v(blnExtended):$$Include%v() + #define gd ..GAData + #define KenmGrp + #define AddToCalcArray(%v) Set tmpAr("%v")=%v + + d WLIP^vhDBG(97,"Start CalcItems "_$G(CalcType)) + Quit:($G(CalcType)="") $$$OK + ; Init variables + Set blnExtended=$S(CalcType="DTL":1, 1:0) + ;Set %KenmGrpTBX="TB" + Do tciTempSettings + + ; Start Calc + d RestartTimer^vhLib() + ;Do $$$CreateIfActief(PRLALI) ; Do:($$IncludePRLALI()) CalcPRLALI(), CreateExtendPRLALI():blnExtended + Do $$$CreateIfActief(PRLALI) ; Do:($$IncludePRLALI()) CalcPRLALI(blnExtended) + Do $$$CreateIfActief(PRLARE) ; Do:($$IncludePRLARE()) CalcPRLARE(blnExtended) + Do $$$CreateIfActief(PRBDHO) ; Do ... + Do $$$CreateIfActief(PRRUGHS) ; Do ... + d WL^vhDBG("Time for Calc :"_$$TimeFromStart^vhLib) + + ; Finish calc; cleanup variables + ;Kill %KenmGrpTBX + Quit $$$OK +tciTempSettings + #define blnInc 0 + Set arCacheRef=$Name($$$globCalcCache($Increment($$$globCalcCache,$$$blnInc))) + d WL^vhDBG("arCacheRef="_arCacheRef) + Kill @arCacheRef + Quit + + /* * / + ; --- + ;Set DItemLabel="PRLALI" Set MetaItem="PRKENM" +IncludePRLALI() + Set Actief=1 + Do ValueToCalcCache("PRLALI",$$$cckeyActief,Actief) ; $LB(Actief)) + Quit Actief +CalcPRLALI(blnExtended) + Set Kenm=$LB($LB("BasisType","LA"),$LB("tB",1),$LB("Design",$$$gd.DC),$LB("LadeDiepte",$$$gd.LD),$LB("Kleur",$$$gd.KL),$LB("DraagKracht",$$$gd.DK),$LB("ZijwandHoogte",$$$gd.ZW),$LB("$COMB$","($CASE({Verpakking},""E"":1,""I"":10,:20)+$CASE({LiRe},""LI"":0,:1))")) + Set KenmGrp=$$$prKenmKenmGrp + Set PRNr=$$$prKenmPRNr + Set KTekst=$$$prKenmKTekst + Set Oms="Lade "_$S(..GetKenmerkVal("Verpakking",PRNr,KenmGrp)="V1":"links+rechts",1:"links") + Set Qty=1 + Set KPrijs=$$$prKenmKPrijs ; NoSa is undefined --> defaulted + Set GNetto=$$$prKenmGNetto + Set GTarra=$$$prKenmGTarra + Set IncludeBS=($$$gd.ODSP="") + ;Set tmpLB=$LB(1,Oms,,,,)_ $LB(PRNr,KTekst,,KenmGrp,Kenm)_ $LB(Qty,KPrijs,GNetto,GTarra,IncludeBS,,"") ; _ $LB(,,,,,,) ; BASIS : $LB(1-6)_ $LB(7-11)_ $LB(12-18)_ $LB(19-25) + Set tmpLB=$$$prKenmCacheLB + Do ValueToCalcCache("PRLALI",$$$cckeyCalcBasis,tmpLB) + Do:($G(blnExtended)) CalcExtendPRLALI(,PRNr,KenmGrp) ; .tmpLB, + Quit +CalcExtendPRLALI(lbCalcBasis,PRNr,KenmGrp) + If $D(lbCalcBasis) Do + . Set PRNr=$G(PRNr,$LG(lbCalcBasis,$$$licbPRNr)) + . Set KenmGrp=$G(KenmGrp,$LG(lbCalcBasis,$$$licbKenmGrp)) + Set FabrGroep="Monteren" + Set FabrPrep="MON" + Set lbKMArgs=$LB( $LB("BasisType"), $LB("Design"), $LB("ZijwandHoogte"), $LB("LadeDiepte"), $LB("LiRe"), $S($$$gd.DK>50:$LB("DraagKracht"),$$$gd.DK=25:$LB(,"INTRABOX"),1:""), $LB("Kleur")) + Set FabrOms=..GetOmsViaKenm(lbKMArgs, ", ", PRNr, .KenmGrp) + Set FabrTekstX01=$S((..GetKenmerkVal("Verpakking",PRNr,.KenmGrp)="V1")&&($$$gd.LC?1(1"K",1"C")):$LB("Onderdelen 2","V1->Positioneringsdeel vr T-box-zijkant ""K""",,"2st",,""),1:"") + Set FabrTekstX02=$S((..GetKenmerkVal("Verpakking",PRNr,.KenmGrp)="V1")&&('$$$gd.NM.NMAK):$LB("Onderdelen 2","V1->Afdekkappen meeleveren LI+RE",,,,""),1:"") + Set tmpLB=$LB($G(FabrGroep), $G(XMLTags), $G(lbKMArgs), $G(FabrOms), $G(FabrPrep), $G(FabrTekst)) ; EXTEND: $LB(1-6)_ $LB(7-10) + Set tmpLB=tmpLB_$LB(,,,$LB(FabrTekstX01,FabrTekstX02)) ; EXTEND: _ $LB(7-10) + Do ValueToCalcCache("PRLALI",$$$cckeyCalcExtend,tmpLB) + Quit + ; --- + ;Set DItemLabel="PRLARE" Set MetaItem="PRKENM" +IncludePRLARE() + Set PRNrLALI=$LG($$LBFromCalcCache("PRLALI",),$$$licbPRNr) ; $$GetPRNrFromDItemLabel("PRLALI") + Set Actief=(..GetKenmerkVal("Verpakking",PRNrLALI,)'="V1") + Do ValueToCalcCache("PRLARE",$$$cckeyActief,Actief) ; $LB(Actief)) + Quit Actief +CalcPRLARE(blnExtended) + Set PRNrLALI=$LG($$LBFromCalcCache("PRLALI",),$$$licbPRNr) ; $$GetPRNrFromDItemLabel("PRLALI") + Set Oms="Lade rechts" + Set Kenm=$LB($LB("BasisType","LA"),$LB("tB",1),$LB("LiRe","RE"),$LB("Design",$$$gd.DC),$LB("Verpakking",..GetKenmerkVal("Verpakking",PRNrLALI,)),$LB("LadeDiepte",$$$gd.LD),$LB("Kleur",$$$gd.KL),$LB("DraagKracht",$$$gd.DK),$LB("ZijwandHoogte",$$$gd.ZW)) + Set KenmGrp=$$$prKenmKenmGrp + Set PRNr=$$$prKenmPRNr + Set KTekst=$$$prKenmKTekst + Set Qty=1 + Set KPrijs=$$$prKenmKPrijs ; NoSa is undefined --> defaulted + Set GNetto=$$$prKenmGNetto + Set GTarra=$$$prKenmGTarra + Set IncludeBS=($$$gd.ODSP="") + ;Set tmpLB=$LB(1,Oms,,,,)_ $LB(PRNr,KTekst,,KenmGrp,Kenm)_ $LB(Qty,KPrijs,GNetto,GTarra,IncludeBS) ; _ $LB(,,,,,,) ; BASIS : $LB(1-6)_ $LB(7-11)_ $LB(12-18)_ $LB(19-25) + Set tmpLB=$$$prKenmCacheLB + Do ValueToCalcCache("PRLARE",$$$cckeyCalcBasis,tmpLB) + Do:($G(blnExtended)) CalcExtendPRLARE(,PRNr,KenmGrp) + Quit +CalcExtendPRLARE(lbCalcBasis,PRNr,KenmGrp) + If $D(lbCalcBasis) Do + . Set PRNr=$G(PRNr,$LG(lbCalcBasis,$$$licbPRNr)) + . Set KenmGrp=$G(KenmGrp,$LG(lbCalcBasis,$$$licbKenmGrp)) + Set FabrGroep="Monteren" + Set FabrPrep="MON" + Set lbKMArgs=$LB( $LB("BasisType"), $LB("Design"), $LB("ZijwandHoogte"), $LB("LadeDiepte"), $LB("LiRe"), $S($$$gd.DK>50:$LB("DraagKracht"),$$$gd.DK=25:$LB(,"INTRABOX"),1:""), $LB("Kleur")) + Set FabrOms=..GetOmsViaKenm(lbKMArgs, ", ", PRNr, .KenmGrp) + Set tmpLB=$LB($G(FabrGroep), $G(XMLTags), $G(lbKMArgs), $G(FabrOms), $G(FabrPrep), $G(FabrTekst)) ; EXTEND: $LB(1-6)_ $LB(7-10) + Do ValueToCalcCache("PRLARE",$$$cckeyCalcExtend,tmpLB) + Quit + ; --- + ;Set DItemLabel="PRBDHO" Set MetaItem="PR1DIM" +IncludePRBDHO() + Set Actief=($$$gd.MATKL="HS")&&($$$gd.KB'="XX") + Do ValueToCalcCache("PRBDHO",$$$cckeyActief,Actief) ; $LB(Actief)) + Quit Actief +CalcPRBDHO(blnExtended) + Set Oms="Bodem" + Set Kenm=$LB($LB("BasisType","BODEMSTRK"_$S($$$gd.KLAS="SP":"SP",1:"")),$LB("tB",1),$LB("Kleur",$$$gd.KB))_$S($$$gd.KLAS="SP":"",1:$LB($LB("LadeDiepte",$$$gd.LD))) + Set KenmGrp=$$$pr1dimKenmGrp + Set PRNr=$$$pr1dimPRNr + Set KTekst=$$$pr1dimKTekst + Set PRLen=$$$pr1dimPRLen + Set BrutPct=0 + Set BrutStk=3 + Set UitvalPct=0.15 + Set UitvalStk=0 + Set lbPRLALI=$$LBFromCalcCache("PRLALI",) + Set DimHF=$$$gd.IB-..GetKenmerkVal("AftrekBodem",$LG(lbPRLALI,$$$licbPRNr),$LG(lbPRLALI,$$$licbKenmGrp)) + Set DimHFBrut=$$$pr1dimDimHFBrut + Set DimHFUitval=$$$pr1dimDimHFUitval + Set Qty=1 + Set KPrijs=$$$pr1dimKPrijs ; NoSa is undefined --> defaulted + Set GNetto=$$$pr1dimGNetto + Set GTarra=$$$pr1dimGTarra + Set IncludeBS=($$$gd.ODSP="")||($$$gd.ODSP["B") + Set tmpLB=$$$pr1dimCacheLB ; $LB(1,Oms,,,,)_ $LB(PRNr,KTekst,PRLen,KenmGrp,Kenm)_ $LB(Qty,KPrijs,GNetto,GTarra,IncludeBS)_ $LB(,)_ $LB(BrutPct,BrutStk,UitvalPct,UitvalStk,DimHF,DimHFBrut,DimHFUitval) ; BASIS : $LB(1-6)_ $LB(7-11)_ $LB(12-16)_ $LB(17-18)_ $LB(19-25) + Do ValueToCalcCache("PRBDHO",$$$cckeyCalcBasis,tmpLB) + Do:($G(blnExtended)) CalcExtendPRBDHO(,PRNr,KenmGrp) + Quit +CalcExtendPRBDHO(lbCalcBasis,PRNr,KenmGrp) + If $D(lbCalcBasis) Do + . Set PRNr=$G(PRNr,$LG(lbCalcBasis,$$$licbPRNr)) + . Set KenmGrp=$G(KenmGrp,$LG(lbCalcBasis,$$$licbKenmGrp)) + Set FabrGroep="Bodem"_$ZDT($H,4) + Set lbKMArgs=$LB( $LB("BasisType"), $LB("Kleur"), $LB("LadeDiepte",$S($$$gd.KLAS="SP":161, 1:$$$gd.LD-24))) + Set FabrOms=..GetOmsViaKenm(lbKMArgs, ", ", PRNr, .KenmGrp) _ $S($$$gd.DK=80:", *ZONDER_GROEF*", 1:"") _ $S(..GetKenmerkVal("Opties",PRNr,.KenmGrp)="H":",*** SPECIAAL Lichtgrijs ***", 1:"") + Set tmpLB=$LB($G(FabrGroep), $G(XMLTags), $G(lbKMArgs), $G(FabrOms), $G(FabrPrep), $G(FabrTekst)) ; EXTEND: $LB(1-6)_ $LB(7-10) + Do ValueToCalcCache("PRBDHO",$$$cckeyCalcExtend,tmpLB) + Quit + ; --- + ;Set DItemLabel="PRRUGHS" Set MetaItem="PR1DIM" +IncludePRRUGHS() + Set Actief=($$$gd.MATKL="HS")&&('$$$gd.IsSR)&&($$$gd.KLAS'?1(1"SP2",1"SY"))&&($$$gd.KB'="XX") + Do ValueToCalcCache("PRRUGHS",$$$cckeyActief,Actief) ; $LB(Actief)) + Quit Actief +CalcPRRUGHS(blnExtended) + Set Oms="Rug" + Set Kenm=$LB($LB("BasisType",$S($$$gd.DS="BA":"RUGPL",1:"RUGSTRK")),$LB("tB",1),$LB("Kleur",$$$gd.KB),$LB("RugHoogte",$S($L($$$gd.RSTL):$$$gd.RSTL,1:$$$gd.RH))) + Set KenmGrp=$$$pr1dimKenmGrp + Set PRNr=$$$pr1dimPRNr + Set KTekst=$$$pr1dimKTekst + Set PRLen=$$$pr1dimPRLen + Set BrutPct=0 + Set BrutStk=3 + Set UitvalPct=0.15 + Set UitvalStk=0 + Set lbPRLALI=$$LBFromCalcCache("PRLALI",) + Set DimHF=$$$gd.IB-(..GetKenmerkVal("AftrekRug",$LG(lbPRLALI,$$$licbPRNr),$LG(lbPRLALI,$$$licbKenmGrp))) + Set DimHFBrut=$$$pr1dimDimHFBrut + Set DimHFUitval=$S($$$gd.DS="BA":PRLen/$S(PRLen/3>DimHFBrut:3, PRLen/2>DimHFBrut:2, 1:1), 1:$$$pr1dimDimHFUitval) + Set Qty=1 + Set KPrijs=$$$pr1dimKPrijs ; NoSa is undefined --> defaulted + Set GNetto=$$$pr1dimGNetto + Set GTarra=$$$pr1dimGTarra + Set IncludeBS=($$$gd.ODSP="")||($$$gd.ODSP["R") + Set tmpLB=$$$pr1dimCacheLB ; $LB(1,Oms,,,,)_ $LB(PRNr,KTekst,PRLen,KenmGrp,Kenm)_ $LB(Qty,KPrijs,GNetto,GTarra,IncludeBS)_ $LB(,)_ $LB(BrutPct,BrutStk,UitvalPct,UitvalStk,DimHF,DimHFBrut,DimHFUitval) ; BASIS : $LB(1-6)_ $LB(7-11)_ $LB(12-18)_ $LB(19-25) + Do ValueToCalcCache("PRRUGHS",$$$cckeyCalcBasis,tmpLB) + Do:($G(blnExtended)) CalcExtendPRRUGHS(,PRNr,KenmGrp) + Quit +CalcExtendPRRUGHS(lbCalcBasis,PRNr,KenmGrp) + If $D(lbCalcBasis) Do + . Set PRNr=$G(PRNr,$LG(lbCalcBasis,$$$licbPRNr)) + . Set KenmGrp=$G(KenmGrp,$LG(lbCalcBasis,$$$licbKenmGrp)) + Set FabrGroep="Rug" + Set FabrPrep=$S($$$gd.DC="B":"RUGB",1:"ZAAG") + Set lbKMArgs=$LB( $LB("BasisType"), $LB("LadeDiepte"), $LB("RugHoogte"), $LB("Kleur")) + Set FabrOms=..GetOmsViaKenm(lbKMArgs, ", ", PRNr, .KenmGrp) _ ", "_$P($P("N69;M84;B135;D199;K116;C167",$$$gd.RH,2),";")_"mm"_$S(..GetKenmerkVal("Opties",PRNr,.KenmGrp)="H":",*** SPECIAAL Lichtgrijs ***",1:"")_$S($L($$$gd.RSTL):",*** VERLAAGDE RUG ***",1:"") + Set tmpLB=$LB($G(FabrGroep), $G(XMLTags), $G(lbKMArgs), $G(FabrOms), $G(FabrPrep), $G(FabrTekst)) ; EXTEND: $LB(1-6)_ $LB(7-10) + Do ValueToCalcCache("PRRUGHS",$$$cckeyCalcExtend,tmpLB) + Quit + /* * / + + +ValueFromCalcCache(ItemLabel,ParamKey) + Quit $S($L($G(arCacheRef)):$G(@arCacheRef@(ItemLabel,ParamKey)), 1:"") + Quit +ValueToCalcCache(ItemLabel,ParamKey,Value) + Set:($L($G(arCacheRef))) @arCacheRef@(ItemLabel,ParamKey)=Value + Quit +ArrayToCalcCache(ItemLabel,arAddValues) ; arAddValues als .local doorgeven + Merge:($L($G(arCacheRef))) @arCacheRef@(ItemLabel)=arAddValues + Quit + +LBFromCalcCache(ItemLabel,ccKey) + Set:($G(ccKey)="") ccKey=$$$cckeyCalcBasis + Quit $S($L($G(arCacheRef)):$G(@arCacheRef@(ItemLabel,ccKey)), 1:"") + Quit + + /* */ \ No newline at end of file Index: BL/FOP/DocBase/WS.mac.rou =================================================================== diff -u --- BL/FOP/DocBase/WS.mac.rou (revision 0) +++ BL/FOP/DocBase/WS.mac.rou (revision 1152) @@ -0,0 +1,250 @@ +#include %VHMacro +#include %occInclude + +AsyncFopStatus(DocBaseID,Status,NumberOfPages,DocURL) +#define FopJobLookup(%id) ^Sys.Event.Lookup("FOP","fopJobID",%id) +#define SFSLookup(%key) ^Sys.Event.Lookup("FOP","SFSKey",%key) + Quit:($G(DocBaseID)="") + New %blFOPDocBase,Rslt,blnQuit + Set %PrefixWL=">SFS: " + Do RestartTimer^vhLib() + Hang 0.05 ; Delay this process, timeshift simplifies the order of events in case of (DocBase config) Sync mode! + Do WLIP^vhDBG(97,$G(%PrefixWL)_"FopStatus triggered --> Jobbed by WS (JobID="_$J_")") + If '$$afsLookup(DocBaseID) Do + . Set $$$SFSLookup("SFS\"_DocBaseID)=$J + . d WL^vhDBG($G(%PrefixWL)_"Waiting for Signal (LookupViaSFSKey:"_"SFS\"_DocBaseID_")") + . Set Rslt=$SYSTEM.Event.Wait("",10) + . Kill $$$SFSLookup("SFS\"_DocBaseID) ; Wait-event signalled or timed out --> lookup no longer needed + . If Rslt=0 Do + .. Set blnQuit=0 ; decide if routine should quit in case of a wait timeout. + .. ; Log that SFS wait has timed out --> TO DO ! + Quit:($G(blnQuit,0)) + Set:('$G(%blFOPDocBase)) %blFOPDocBase=$System.OBJ.New("BL.FOP.DocBase.TestWS") + Do %blFOPDocBase.OnSendFOPStatus(.DocBaseID,.Status,.NumberOfPages,.DocURL) + Set $ZTRAP="" + Quit +afsLookup(DocBaseID) + Quit $$$aHasData($$$FopJobLookup(DocBaseID)) +afsFopStatusError + Set $ZTRAP="" + d WL^vhDBG($G(%PrefixWL)_"Error in Job AsyncFopStatus): "_$$$CRLF_$ZE) + Set $ZE="" + Quit + + + // Calls the FopProcess() method in a separate thread. + // Returns nothing, signal a process (lookup JobID) when the DocBase process (via WS) has finished, ONLY if the SendFOPStatus task is included !!! + // Apply next lines into your code to SIMULATE an Async FopProcess() call : + // + // Job FopProcessSyncInThread(fopReq,TimeOut,blnPeek) + // Set fopJobID=$ZCHILD + // Quit fopJobID +FopProcessSyncInThread(fopReq,TimeOut,blnPeek) +#define FopJobLookup(%id) ^Sys.Event.Lookup("FOP","fopJobID",%id) +#define SFSLookup(%key) ^Sys.Event.Lookup("FOP","SFSKey",%key) + New fopReqID,fopRes,fopJobID,DocBaseID,msg,Rslt,sc + New %blFOPDocBase + Hang 0.01 + Set %PrefixWL=">ASYNC: " + Set $ZTRAP="fpsInThreadError" + d WLIP^vhDBG(97,$G(%PrefixWL)_"Started FopProcessSyncInThread() --> $J="_$J) + Set:('$G(%blFOPDocBase)) %blFOPDocBase=$System.OBJ.New("BL.FOP.DocBase.TestWS") + Do fpsOpenRequestObj() + Set fopRes=%blFOPDocBase.FopProcess(fopReq,.TimeOut,.blnPeek) ;Set fopRes=..FopProcess(fopReq,.TimeOut,.blnPeek) + Set fopJobID=$J ; Use as simulated fopJobID, instead of the real fopRes.jobID + Set:($IsObject(fopRes)) DocBaseID=fopRes.jobID + If $L($G(DocBaseID)) Do + . Merge $$$FopJobLookup(DocBaseID)=$$$FopJobLookup(fopJobID) + . Set Rslt=%blFOPDocBase.SignalViaSFSKey("SFS\"_DocBaseID,.msg) + Set sc=$$fpsHandleFopResponse() + If $$$ISERR(sc) Do + . Kill:($L($G(DocBaseID))) $$$FopJobLookup(DocBaseID) ; It will not be used because SendFopStatus will not be triggered + . ; Set StatusFromFopResponse + . Kill ^Sys.FOP.Log("ByJOB",fopJobID) + . Set ^Sys.FOP.Log("ByJOB",fopJobID)=sc + . ; Signal the parent job if waiting + . Set Rslt=%blFOPDocBase.SignalViaFopJobID(fopJobID,.msg) + Do fpsRemoveRequestObj() + Set $ZTRAP="" + Quit +fpsOpenRequestObj() + Quit:($IsObject(fopReq)) + ; Else: Open Request object via ID + Set fopReqID=fopReq + Set fopReq=##class(WS.FOP.WSRequestInfo).%OpenId(fopReqID) + Set:(fopReq.data=" ") fopReq.data="" + Set:(fopReq.dataRef=" ") fopReq.dataRef="" + ;Set fopReq.dataRef=$E(fopReq.dataRef,1,45) // Temp Test to create an ERROR on purpose!!! + ;d WL^vhDBG($G(%PrefixWL)_"Opened FopRequest object: "_$G(fopReq)) + Quit +fpsRemoveRequestObj() + Set fopReqID=fopReq.%Id() + Quit:(fopReqID="") + Set fopReq="" + Set sc=##class(WS.FOP.WSRequestInfo).%DeleteId(fopReqID) + Quit +fpsHandleFopResponse() + Quit:('$IsObject(fopRes)) $$$ERROR($$$GeneralError,"No Response Object") + Set sc=%blFOPDocBase.HandleFopResponseError(fopRes,fopReq) + Quit sc +fpsInThreadError + Set $ZTRAP="" + d WL^vhDBG($G(%PrefixWL)_"Error in Job (FopProcessSyncInThread): "_$$$CRLF_$ZE) + Set $ZE="" + Quit + + + + + + /* +AsyncFopStatus(DocBaseID,Status,NumberOfPages,DocURL) +#define LogStatusSFS(%id) ^Sys.Event.Logging("FOP-SFS",%id) + ;quit + Quit:($G(DocBaseID)="") + New %blFOPDocBase,Rslt + Set $$$LogStatusSFS(DocBaseID)="Inited" + Set $ZTRAP="afsFopStatusError" + Do WLIP^vhDBG(97,">SFS: FopStatus triggered --> Jobbed by WS (JobID="_$J_")") + ;Do RestartTimer^vhLib() + Set ^Sys.Event.Lookup("FOP","fopJobID","SFS\"_DocBaseID)=$J + Set $$$LogStatusSFS(DocBaseID)="Waiting" + ;d WL^vhDBG(">SFS: Waiting for Signal ") + Set Rslt=$SYSTEM.Event.Wait("",10) + ;d WL^vhDBG(">SFS: continue after waiting. Result: "_Rslt) + Kill ^Sys.Event.Lookup("FOP","fopJobID","SFS\"_DocBaseID) ; Wait event signalled or timed out --> lookup no longer needed + If Rslt=0 Do Quit + . Set $$$LogStatusSFS(DocBaseID)="TimedOut" + . ; Log timed out + ; Else + Set:('$G(%blFOPDocBase)) %blFOPDocBase=$System.OBJ.New("BL.FOP.DocBase.TestWS") + Do %blFOPDocBase.OnSendFOPStatus(.DocBaseID,.Status,.NumberOfPages,.DocURL) + Set $$$LogStatusSFS(DocBaseID)="Finished" + Set $ZTRAP="" + Quit +afsFopStatusError + Set $ZTRAP="" + Set $$$LogStatusSFS(DocBaseID)="Error" + d WL^vhDBG("Error in Job AsyncFopStatus): "_$$$CRLF_$ZE) + Set $ZE="" + Quit + + + + // Calls the FopProcess() method in a separate thread. + // Returns nothing, doesn't signal a process (lookup JobID) when the DocBase process (via WS) has finished. + // Apply next lines into your code to SIMULATE an Async FopProcess() call : + // + // Job FopProcessSyncInThread(fopReq,TimeOut,blnPeek) + // Set fopJobID=$ZCHILD + // Quit fopJobID + // + // ATTENTION: Do not include the SendFOPStatus task in the DocBase Process with sync-mode! + // It will attempt to trigger a Signal on the real fopJobID. +FopProcessSyncInThread(fopReq,TimeOut,blnPeek) + New fopReqID,fopRes,fopJobID,msg,Rslt + New %blFOPDocBase + Set $ZTRAP="fpsInThreadError" + d WLIP^vhDBG(97,"Started FopProcessSyncInThread() --> $J="_$J) + Set:('$G(%blFOPDocBase)) %blFOPDocBase=$System.OBJ.New("BL.FOP.DocBase.TestWS") + Do fpsOpenRequestObj() + d WL^vhDBG("Start FopProcess: "_$G(fopReq)) + Set fopRes=%blFOPDocBase.FopProcess(fopReq,.TimeOut,.blnPeek) ;Set fopRes=..FopProcess(fopReq,.TimeOut,.blnPeek) + Set fopJobID=$J ; Use as simulated fopJobID, instead of the real fopRes.jobID + Do fpsSimulateSendFOPStatus() + d WL^vhDBG("fopRes: "_$G(fopRes)) + If $IsObject(fopRes) Do + . ; Log Response + . Set sc=%blFOPDocBase.HandleFopResponse(fopRes,fopReq) ;Set sc=..HandleFopResponse(fopRes,fopReq) + Do fpsRemoveRequestObj() + Set $ZTRAP="" + Quit +fpsOpenRequestObj() + Quit:($IsObject(fopReq)) + ; Else: Open Request object via ID + Set fopReqID=fopReq + Set fopReq=##class(WS.FOP.WSRequestInfo).%OpenId(fopReqID) + Set:(fopReq.data=" ") fopReq.data="" + Set:(fopReq.dataRef=" ") fopReq.dataRef="" + Quit +fpsRemoveRequestObj() + Set fopReqID=fopReq.%Id() + Quit:(fopReqID="") + Set fopReq="" + Set sc=##class(WS.FOP.WSRequestInfo).%DeleteId(fopReqID) + Quit +fpsSimulateSendFOPStatus() + Set Rslt=%blFOPDocBase.SignalViaFopJobID("SFS\"_fopJobID,.msg) + d:($L($G(msg))) WL^vhDBG("SignalViaFopJobID: "_msg) + Quit +fpsInThreadError + Set $ZTRAP="" + d WL^vhDBG("Error in Job (FopProcessSyncInThread): "_$$$CRLF_$ZE) + Set $ZE="" + Quit + */ + + + /* * / +/// Call DocBase WS process via sync method. The response is returned by reference (.local SyncResponse) +ClassMethod CallWSProcessSync(fopReq As WS.FOP.WSRequestInfo, ByRef fopRes As WSResponse, TimeOut As %Integer, blnPeek As %Boolean) As %Status +{ + ;New cl,jobID,sc + ;New CustomMsg + Set cl=$System.OBJ.New("WS.FOP.DocBase") + Set sc=..PrepareWSClient(.TimeOut,.blnPeek) + Quit:($$$ISERR(sc)) sc + ;d WL^vhDBG("SOAP Client class: "_cl_$$$CRLF_$$ObjToText^vhLib(cl)) + d WL^vhDBG($G(%PrefixWL)_"Invoke DocBase WS ""fopRes=cl.process(fopReq)"" ... ") + Do cpsFopProcessSub() + d WL^vhDBG($G(%PrefixWL)_"Finished DocBase cl.process: Result: "_$G(fopRes)) + Quit sc +cpsFopProcessSub() + Set fopRes="" + ;Quit:(locIndx<0) + Set $ZTRAP="cpsSoapErrorWSSync" + Set fopRes=cl.process(fopReq) + Set $ZTRAP="" + Quit +cpsSoapErrorWSSync + Set $ZTRAP="" + Set sc=$$$ERROR($$$GeneralError,"Error in FOP web service: CallWSProcessSync() method.") + Do ..SoapErrorHandler() + Set $ZE="" + Quit +} + +/// Call DocBase WS via Async method. The JobID of the async DocBase process/thread is returned immediatly (.local JobID) +ClassMethod CallWSProcessAsync(fopReq As WS.FOP.WSRequestInfo, ByRef JobID As %String, TimeOut As %Integer) As %Status +{ + ;New cl,sc,jobID + ;New CustomMsg + Set cl=$System.OBJ.New("WS.FOP.DocBaseAsync") + Set sc=..PrepareWSClient($G(TimeOut,20),0) + Quit:($$$ISERR(sc)) sc + ;d WL^vhDBG("SOAP Client class: "_cl_$$$CRLF_$$ObjToText^vhLib(cl)) + d WL^vhDBG($G(%PrefixWL)_"Invoke DocBase WS ""fopRes=cl.process(fopReq)"" ... ") + Do cpaFopProcessSub() + Set jobID=$G(jobID) + d WL^vhDBG($G(%PrefixWL)_"Finished DocBase cl.process: Result: "_$G(jobID)) + Quit sc +cpaFopProcessSub() + Set fopRes="" + ;Quit:(locIndx<0) + Set $ZTRAP="cpaSoapErrorWSAsync" + Set jobID=cl.startRequest(fopReq) + ; next lines ??? + ;Set fopRes=$System.OBJ.New("WS.FOP.WSResponse") ; WS.FOP.WSAsyncResponse + ;Set fopRes.jobID=jobID + Set $ZTRAP="" + Quit +cpaSoapErrorWSAsync + Set $ZTRAP="" + Set sc=$$$ERROR($$$GeneralError,"Error in FOP web service: CallWSProcessAsync() method.") + Do ..SoapErrorHandler() + Set $ZE="" + Quit +} + /* */ + + \ No newline at end of file Index: BL/Sys/FOP/Test/tmpDev.mac.rou =================================================================== diff -u -r936 -r1152 --- BL/Sys/FOP/Test/tmpDev.mac.rou (.../tmpDev.mac.rou) (revision 936) +++ BL/Sys/FOP/Test/tmpDev.mac.rou (.../tmpDev.mac.rou) (revision 1152) @@ -3,6 +3,7 @@ #include DocBaseCNTs + /* arTaskSeq(0,"MERGEMAIN")=0 arTaskSeq(0,"OBJ")=1@Sys.FOP.Task Index: Prod/GADef/KaderDeur/KostPrijsOrig.mac.rou =================================================================== diff -u --- Prod/GADef/KaderDeur/KostPrijsOrig.mac.rou (revision 0) +++ Prod/GADef/KaderDeur/KostPrijsOrig.mac.rou (revision 1152) @@ -0,0 +1,316 @@ + Kill ; Compiled March 14, 2001 17:22:49 + Do KillAllObjects^%apiOBJ() + Set Obj=##class(Prod.GADef.KaderDeur).%OpenId(2) + Write Obj.KostPrijs(1,,1) + Do Obj.DisplayPrijsDtl() + Set Prijs=$$CALC(Obj) + Write !,"Prijs = ",Prijs,! + Quit +TEST Set Prof="P02-EV" + Set Vul="" + Set VulExtra="" + Set Hoogte=1193 + Set Breedte=399 + Set CharType="HETS" + Set CharQty=0 + Set VulBor=0 + Set P1Bor=0 + Set P2Bor=0 + Set P3Bor=0 + Set IsMont="" + Set IsMont="" + Set ProfKost=500 + Set VulKost=2000 + Set caObj=##class(Prod.GADef.KaderDeur).%New() + Do caObj.FillObjectViaParam(Prof,Hoogte,Breedte,CharType,CharQty,VulBor,P1Bor,P2Bor,P3Bor,Vul,VulExtra,IsMont,"",ProfKost,VulKost) + Do caObj.%Save() + Set Prijs=caObj.KostPrijs(1,"",1) + Write caObj.%Id(),"->",Prijs + ;Do caObj.%Close() + Quit +CALC(%this,Staffel,CalcObj) + New Muntpar,DtlObj,Tel,Hoogte,Breedte,Omtrek,Opp,Volume,VulHoogte,VulBreedte,VulOmtrek,VulOpp,VulVolume,KaliberQty,ProfLengte,Toepas + New ProfUitval,ProfUitvalFaktor,DichtUitval,DichtUitvalFaktor,QtyGlasBoor,ProfQtyProf,TelVul,TelProf,Prijs,GAObj,IsMont,GlasProf,VolgNr + Set GAObj=%this + Do INIT + ; Do DEBUG^%Serenji("VERPAK+1^"_$zn,"192.168.1.15") + Set Prijs=0 + Set:Toepas'="GL" Prijs=Prijs+$$GOEDEREN() + Set Prijs=Prijs+$$VULLING() + Set:Toepas'="GL" Prijs=Prijs+$$CAD() + Set:Toepas'="GL" Prijs=Prijs+$$GEREI() + Set:Toepas'="GL" Prijs=Prijs+$$ZAAG(Hoogte) + Set:Toepas'="GL" Prijs=Prijs+$$ZAAG(Breedte) + Set:Toepas'="GL" Prijs=Prijs+$$FREES() + Set:Toepas'="GL" Prijs=Prijs+$$BOOR() + Set:Toepas'="GL" Prijs=Prijs+$$DICHTING() + Set:Toepas'="GL" Prijs=Prijs+$$MONTEER() + Set:Toepas'="GL" Prijs=Prijs+$$CONTROLE() + Set Prijs=Prijs+$$VERPAK() + Quit Prijs +INIT + Set GlobRef=$NA(^ResItemsD(4)), GlobDef=4 + ; *** + ; *** al volgende locals worden gebruikt voor de kostprijs calculatie : MultiplicantEval en ReductieEval + ; *** + Set GemCom=3 ; Gemiddelde commisiegrootte + Set Staffel=$G(Staffel,1) + Set:Staffel<0 Staffel=-Staffel ; absolute waarde + Set Staffel=$S(Staffel<10:1,Staffel>50:Staffel,1:Staffel\10*10) ;Staffel tussen 1 en 50 in stappen van 10 + Set Hoogte=%this.Hoogte/1000 + Set Breedte=%this.Breedte/1000 + Set Omtrek=%this.KadOmtrek() ; in meters + Set Opp=%this.KadOpp() + ;Set Volume=%this.KadVolume() + Set VulHoogte=%this.VulHoogte()/1000 + Set VulBreedte=%this.VulBreedte()/1000 + Set VulOmtrek=%this.VulOmtrek() ; in meters + Set VulOpp=%this.VulOpp() + ;Set VulVolume=%this.VulVolume() + Set ProfLengte=%this.ProfAfw.Lengte Set:'ProfLengte ProfLengte=3 + Set ProfUitval=%this.ProfType.ProfUitval/1000 + Set ProfUitvalFaktor=1+%this.ProfType.ProfUitvalPerc + Set DichtUitval=%this.ProfType.DichtUitval/1000 + Set DichtUitvalFaktor=1+%this.ProfType.DichtUitvalPerc + Set KaliberQty=%this.ProfType.KaliberAantal Set:KaliberQty KaliberQty=250\(%this.ProfType.Breedte+10) + Set GlasProf=$E(%this.ProfType.ItemID,3)="G" + Set IsMont=%this.Gemonteerd["K" + Set Toepas=%this.Toepassing.ItemID + Do %this.TelBoringen(.TelProf,.TelVul) + ;zw TelProf + ;zw TelVul + Set VolgNr=0 + ;zw TelProf + Quit +GOEDEREN() + New Prijs + If %this.ProfAfwKostSpecial Do + . Set Prijs=$$KOST(%this.ProfAfw.ItemID,,%this.ProfAfwKostSpecial) + Else Do + . Set Prijs=$$KOST(%this.ProfAfw.ItemID) + Set Prijs=Prijs+$$KOST(%this.ProfType.DichtingKostCode) + Set:$L(%this.ProfType.Hoek) Prijs=Prijs+$$KOST(%this.ProfType.Hoek.SchroefKostCode) + Set:$L(%this.ProfType.Hoek) Prijs=Prijs+$$KOST(%this.ProfType.Hoek.HoekKostCode) + Quit Prijs +FREES() + New Prijs,ProfKant,ProfQty,ProfWisselQty,ProfPlaats,ProfDiam,GatType,ProfGatenQty,BoorWissel,ProfCnt + Set ProfKant="" + Set Prijs=0 + Set ProfCnt=0 + ; Tellen van hoeveel profielen er moeten genomen worden van de 4 + For Set ProfKant=$O(TelProf(ProfKant)) Quit:ProfKant="" Do + . Set ProfPlaats="" + . For Set ProfPlaats=$O(TelProf(ProfKant,ProfPlaats)) Quit:ProfPlaats="" Do + .. Set:'$D(ProfCnt(ProfPlaats)) ProfCnt=ProfCnt+1 + ; + Set ProfKant="" + For Set ProfKant=$O(TelProf(ProfKant)) Quit:ProfKant="" Do + . New BoorWissel,ProfGatenQty + . Set (ProfQty,ProfWisselQty)=0 + . Set ProfPlaats="" + . For Set ProfPlaats=$O(TelProf(ProfKant,ProfPlaats)) Quit:ProfPlaats="" Do + .. Set ProfQty=ProfQty+1 + .. Set ProfDiam="" + .. For Set ProfDiam=$O(TelProf(ProfKant,ProfPlaats,ProfDiam)) Quit:ProfDiam="" Do + ... Set:'$D(BoorWissel(ProfDiam)) ProfWisselQty=ProfWisselQty+1,BoorWissel(ProfDiam)="" + ... Set:ProfDiam<10 GatType="K" + ... Set:ProfDiam'<10 GatType="G" + ... Set ProfGatenQty(GatType)=$G(ProfGatenQty(GatType))+TelProf(ProfKant,ProfPlaats,ProfDiam) + . Set Prijs=Prijs+$$KOST(%this.ProfType.FreesKostCode) + Quit Prijs +ZAAG(Lengte) + New MaxLengte + Set MaxLengte=$S($E(%this.ProfType.%Id(),2)="S":.350,1:.400) + Quit:Lengte'10 Do ;Groot aantal + .. If %this.Gemonteerd["V" Do ; Groot aantal en Met vulling + ... If $S(Hoogte>Breedte:Hoogte,1:Breedte)<120&($S(Hoogte>Breedte:Breedte,1:Hoogte)<80) Do ; Groot aantal en Met Vulling en Past op een palet + .... Set VerpakType=$LB("K") + ... Else Do ; Groot aantal en Met Vulling en Groter dan een palet + .... Set VerpakType=$LB("K","E") + .. Else Do ; Groot aantal en Geen vulling + ... Set VerpakType=$LB("B") + . Else Do ; Klein aantal + .. If IsMont Do ; Klein aantal en Gemonteerd + ... Set VerpakType=$LB("K","E") + .. Else Do ; Klein aantal en ongemonteerd + ... Set VerpakType=$LB("L","E") + For I=1:1:$LL(VerpakType) Do + . Set:$L($LI(VerpakType,I)) VerpakKost=VerpakKost+$$KOST("V"_$LI(VerpakType,I)) ; inclusief werktijd en verpakkingsgoederen + Quit VerpakKost + +VULLING() + Quit:'$L(%this.Vulling.Vulling) 0 ; Materiaal kost van de vulling indien gedefinieerd + New Prijs,Gehard,ExtraObj,Key + Set Prijs=0 + If %this.VullingKostSpecial<0 Do ; Negatief getal betekend dat de stukprijs is doorgegeven ipv m2 prijs + . Set Prijs=Prijs+$$KOST("VUL"_%this.Vulling.Vulling.ItemID,,,,-%this.VullingKostSpecial) + Else If %this.VullingKostSpecial Do + . Set Prijs=Prijs+$$KOST("VUL"_%this.Vulling.Vulling.ItemID,,%this.VullingKostSpecial,%this.VullingKostSpecial*.25) + Else Do + . Set Prijs=Prijs+$$KOST("VUL"_%this.Vulling.Vulling.ItemID) + Set Key="" + Set Gehard=0 + For Set ExtraObj=%this.Vulling.VullingExtra.GetNext(.Key) Quit:Key="" Do + . Set Prijs=Prijs+$$KOST(ExtraObj.FloatKostCode) + . Set:ExtraObj.ItemID="HARD" Gehard=1 + . Set:ExtraObj.ItemID="RP" Gehard=2 + Set:Gehard=1 Prijs=Prijs+$$KOST("VULRP") ; Indien gehard dan ook Rod�Poli + Set QtyGlasBoor=$P($G(TelVul),"\") + Set:QtyGlasBoor Prijs=Prijs+$$KOST("VULBORING") + Quit Prijs +KOST(Label,MatBasis,MatMultiplicant,MatMin,MatFull) + Quit:Label="" 0 + New Prijs,MemLabel,KostObj + Set MemLabel=Label + Set Prijs=0 + ;Write MemLabel + Do:$D(@GlobRef@(Label)) For Set Label=$O(@GlobRef@(Label)) Quit:$E(Label,1,$L(MemLabel))'=MemLabel Do + .Quit:$L(Label)<4 + .Set KostObj=##class(Res.PI.Kost).%OpenId(GlobDef_"||"_Label) + .Set Prijs=Prijs+$$KOSTCALC(KostObj) + .;Set Prijs=Prijs+KostObj.KostCalc() + .Do KostObj.%Close() + Quit Prijs +KOSTCALC(%this) + New Key,emKostObk,Multi,Reductie,Tijd,TijdKost,Mat,TijdViaMin,MatViaMin,MatBasis2,MatMultiplicant2,MatMin2 + Set Key=Staffel-1 + Set emKostObj=%this.Staffel.GetNext(.Key) + Set:Key="" emKostObj=%this.Staffel.GetNext(.Key) ; Er was geen staffel daarom eerste genomen. + Quit:Key="" 0 ; Geen kostprijs gevonden + ;W !,Label,*9 + Set Multi=$J(%this.MultiplicantEval(),0,4) + Set Reductie=$J(%this.ReductieEval(),0,4) + Set Tijd=emKostObj.TijdBasis+(emKostObj.TijdMultiplicant*Multi) + Set:Tijd Tijd=$S(Tijd>emKostObj.TijdMin:Tijd,1:emKostObj.TijdMin) + Set TijdViaMin=(Tijd=emKostObj.TijdMin) + Set TijdKost=$J(%this.KostPlaatsKost*%this.KostToeslagKlein*%this.KostToeslagGroot*Reductie*Tijd/3600,0,4) + Set:Staffel=10&(%this.Variabelen["Staffel") TijdKost=TijdKost*2 ; Indien Staffel=10 dan niet ineens delen door 10 maar wel door 5 + ; Voor de prijsberekening kan er een speciale prijs doorgegeven worden + Set MatBasis2=$G(MatBasis,emKostObj.MatBasis) + Set MatMultiplicant2=$G(MatMultiplicant,emKostObj.MatMultiplicant) + Set MatMin2=$G(MatMin,emKostObj.MatMin) + Set Mat=MatBasis2+(MatMultiplicant2*Multi) + Set:Mat Mat=$S(Mat>MatMin2:Mat,1:MatMin2) + Set MatViaMin=(Mat=MatMin2) + Set:$G(MatFull) Mat=MatFull,MatViaMin=0 + Set Mat=$J(Reductie*Mat,0,4) + ;W Multi,*9,Reductie,$J(Tijd,10,4),$J(TijdKost,10,4),$J(Mat,10,4) + If Mat!Tijd,CalcObj Do + .Set CalcDtlObj=##class(Prod.GADef.emKadPrijsDtl).%New() + .Set CalcDtlObj.Groep=%this.KostGroep + .Set CalcDtlObj.KostCode=%this.ItemID + .Set CalcDtlObj.KostPlaats=%this.KostPlaats + .Set CalcDtlObj.SortNr=%this.Sort + .Set CalcDtlObj.Multiplicant=Multi + .Set CalcDtlObj.Reductor=Reductie + .Set CalcDtlObj.MatKost=Mat + .Set CalcDtlObj.MatViaMin=MatViaMin + .Set CalcDtlObj.Tijd=$J(Reductie*Tijd,0,0) + .Set CalcDtlObj.TijdKost=TijdKost + .Set CalcDtlObj.TijdViaMin=TijdViaMin + .Set CalcDtlObj.Variabelen=$$EVALVAR(%this.Variabelen) + .Set VolgNr=VolgNr+1 + .Do CalcObj.Details.SetAt(CalcDtlObj,VolgNr) + .Do CalcDtlObj.%Close() + Quit TijdKost+Mat +EVALVAR(Vars) + Set Result="" + For I=1:1:$L(Vars,";") Do + .Set Var=$P(Vars,";",I) + .Quit:'$L(Var) + .X "Set Val=$G("_Var_",""???"")" + .Set Result=Result_"; "_Var_"="_Val + Quit $E(Result,3,999) +IMPORTCLEAN + Set TabelID=4 + Set ID="" + For Set ID=$O(^ResItemsD(TabelID,ID)) Quit:ID="" Do + .Set Obj=##class(Res.PI.Items).%OpenId(TabelID_"||"_ID) + .If Obj.BeperkingTabel="NEW" Do + .. ;Write Obj," " + .. Do Obj.%Close() + .. Do ##class(Res.PI.Items).%DeleteId(TabelID_"||"_ID) + .Else Do + ..Do Obj.%Close() + Quit +IMPORT + Set t=$P($H,",",2) + Do IMPORTCLEAN + Set DevObj=##class(%Library.File).%New("c:\KostDtl.TXT") + ;Write DevObj.Size + Do DevObj.Open("R") + Do DevObj.Rewind() + Set D=$C(9) + Set Cnt=0 + For Set Len=1000,Rec=DevObj.Read(.Len) Quit:Rec="" Do + . Set Cnt=Cnt+1 + . Quit:Cnt=1 ; niet de titel + . ;Write Cnt," " ;,$P(Rec,D,9)," ",$$TRIM($P(Rec,D,9)),! + . Set ID=$P(Rec,D,1) + . Quit:ID="" + . Set TabelID=4 ;=##class(Res.PI.Definitie).IDViaNaam("Kost") + . Set TabObj=##class(Res.PI.Definitie).%OpenId(TabelID) + . Do ##class(Res.PI.Kost).%DeleteId("4||ID") + . Set Obj=##class(Res.PI.Kost).%New() + . Set Obj.TabelID=TabObj + . Set Obj.ItemID=ID + . Set Obj.BeperkingTabel="NEW" + . Set Obj.Sort=$P(Rec,D,2) + . Set Obj.Omschrijving=$$TRIM($P(Rec,D,3)) + . Set Obj.KostGroep=$P(Rec,D,4) + . Set Obj.KostPlaats=$P(Rec,D,5) + . Set Obj.KostPlaatsKost=$TR($P(Rec,D,6),",",".") + . Set Obj.KostToeslagGroot=$TR($P(Rec,D,7),",",".") + . Set Obj.KostToeslagKlein=$TR($P(Rec,D,8),",",".") + . Set Obj.ReductieFormule=$$TRIM($P(Rec,D,9)) + . Set Obj.MultiplicantFormule=$$TRIM($P(Rec,D,10)) + . Set Obj.Variabelen=$$TRIM($P(Rec,D,11)) + . Set emObj=##class(Res.PI.emKostDetail).%New() + . Set Staffel=$P(Rec,D,12) + . Set emObj.TijdBasis=$P(Rec,D,13) + . Set emObj.TijdMultiplicant=$P(Rec,D,14) + . Set emObj.TijdMin=$P(Rec,D,15) + . Set emObj.MatBasis=$TR($P(Rec,D,16),",",".") + . Set emObj.MatMultiplicant=$TR($P(Rec,D,17),",",".") + . Set emObj.MatMin=$TR($P(Rec,D,18),",",".") + . Do Obj.Staffel.SetAt(emObj,Staffel) + . ;Do DumpObject^%apiOBJ(Obj) + . Do Obj.%Save() + . Do Obj.%Close() + Do DevObj.%Close() + Write $P($H,",",2)-t + Q +TRIM(String) + Quit:$E(String)="""" $$TRIM($E(String,2,$L(String)-1)) + Quit:String["""""" $$TRIM($P(String,"""""")_""""_$P(String,"""""",2,9999)) + Quit String \ No newline at end of file Index: Prod/GADef/KaderDeur/TemplSVDX.mac.rou =================================================================== diff -u --- Prod/GADef/KaderDeur/TemplSVDX.mac.rou (revision 0) +++ Prod/GADef/KaderDeur/TemplSVDX.mac.rou (revision 1152) @@ -0,0 +1,227 @@ + ; AUTHOR : Wim VERMEULEN + ; LOCATION : VAN HOECKE N.V. + ; LAST MODIFIED : 14/06/2001 + ; + ; THIS ROUTINE CREATES A KaderDeur OBJECT AS DEFINED BY "SVEDEX" + ; IT USES NO DATA, IT BUILDS THE OBJECT STARTING FROM THE GIVEN PARAMETERS, USING THE CODE AS TEMPLATES; + + + + +VOORBEELD ; Compiled January 16, 2001 20:18:12 + Set Dev="c:\HalOrdExample.xml" + Kill Jump + Do READJUMP^XMLREAD("HADXML","J",.Jump) + Set Status=$$VERWERK^XMLREAD(Dev,.Jump,"E") + Write Status + Quit +J01 ;INIT`X`q Kill OrdObj +J02 ;CLEAN`X`q Kill OrdObj +J03 ;-ORDERLIJN`X`q Merge Test=@Params zw Test +J04 ;-PROD_AD_SVDX`D`CREATEPROD^HADXML +J05 ;-PROD_KD_SVDX`D`CREATEPROD^HADXML +J06 ;-ORDER`X`q Merge Test=@Params zw Test +J07 ;+ORDER`X`q Set OrdObj=##CLASS(Flow.Order.Hoofding).%New() +J08 ;-KLANT`X`Set Naam=$G(@Params@("NAAM")) +CREATEPROD(Level,Tag,TagTyp,TagCache,FullCache,Param) + ;TagCache is een onderdeel van FullCache en wordt aangeduid geadresseerd door @TagCache@(...) + ;FullCache wordt doorgegeven via .Local + ;P geeft de extra tagparamters en wordt doorgegeven via .Local + Set KadObj=##class(Prod.GADef.Kaderdeur).%New() + If Tag="PROD_KD_SVDX" Do DEUR(KadObj,$G(@Params@("KASTHOOGTE")),@Params@("HOOGTE"),@Params@("BREEDTE"),@Params@("PROFIEL","PROFTYPE"),@Params@("PROFIEL","PROFAFW"),$G(@Params@("VULLING")),$G(@Params@("DRAAIRICHT"),"R"),$G(P("GEMONTEERD"))) + If Tag="PROD_LF_SVDX" Do LADE(KadObj,@Params@("HOOGTE"),@Params@("BREEDTE"),@Params@("PROFIEL","PROFTYPE"),@Params@("PROFIEL","PROFAFW"),$G(@Params@("VULLING")),$G(@Params@("PLAATSING"),"I"),$G(P("GEMONTEERD"))) + If Tag="PROD_VS_SVDX" Do VOUW(KadObj,$G(@Params@("KASTHOOGTE")),@Params@("HOOGTE"),@Params@("BREEDTE"),@Params@("PROFIEL","PROFTYPE"),@Params@("PROFIEL","PROFAFW"),$G(@Params@("VULLING")),$G(@Params@("PLAATSING"),"R"),$G(@Params@("DEEL"),"S"),$G(P("GEMONTEERD"))) + If Tag="PROD_AB_SVDX" Do AFBOORD(KadObj,@Params@("HOOGTE"),@Params@("PROFIEL","PROFTYPE"),@Params@("PROFIEL","PROFAFW")) + Quit +DEUR(KadObj,KastHoogte,Hoogte,Breedte,ProfType,ProfAfw,Vulling,VullingExtras,DraaiRicht,Gemonteerd,blnStdDeur) + Set:$G(KastHoogte)'>0 KastHoogte=Hoogte + Set KadObj.Hoogte=Hoogte + Set KadObj.Breedte=Breedte + Do KadObj.ToepassingSetObjectId(##class(Res.PI.Definitie).IDViaNaam("Toepas")_"||"_"KD") + Do KadObj.ProfTypeSetObjectId(##class(Res.PI.Definitie).IDViaNaam("ProfType")_"||"_ProfType) + Do KadObj.ProfAfwSetObjectId(##class(Res.PI.Definitie).IDViaNaam("ProfAfw")_"||"_ProfAfw) + Do KadObj.OphangPlaatsSetObjectId(##class(Res.PI.Definitie).IDViaNaam("OphangPlaats")_"||"_$S(DraaiRicht="L":"L",1:"R")) + If $G(Gemonteerd)="" Set Gemonteerd=$S(KadObj.ProfType.VulCode="A":"L",1:"KV") + Set KadObj.Gemonteerd=Gemonteerd + Set KadObj.Verpakking=$S(Gemonteerd="KV":"K",1:"L") + Do VULLING(KadObj,Vulling,$G(VullingExtras)) + Do SCHARSVDX(KadObj,"S","") + Do GREEP(KadObj,KastHoogte) + Quit +LADE(KadObj,Hoogte,Breedte,ProfType,ProfAfw,Vulling,VullingExtras,OphangPlaats,Gemonteerd) + Set KadObj.Hoogte=Hoogte + Set KadObj.Breedte=Breedte + Do KadObj.ToepassingSetObjectId(##class(Res.PI.Definitie).IDViaNaam("Toepas")_"||"_"LF") + Do KadObj.ProfTypeSetObjectId(##class(Res.PI.Definitie).IDViaNaam("ProfType")_"||"_ProfType) + Do KadObj.ProfAfwSetObjectId(##class(Res.PI.Definitie).IDViaNaam("ProfAfw")_"||"_ProfAfw) + Do KadObj.OphangPlaatsSetObjectId(##class(Res.PI.Definitie).IDViaNaam("OphangPlaats")_"||"_$S(OphangPlaats="I":"I",1:"O")) + If $G(Gemonteerd)="" Set Gemonteerd=$S(KadObj.ProfType.VulCode="A":"L",1:"KV") + Set KadObj.Gemonteerd=Gemonteerd + Set KadObj.Verpakking=$S(Gemonteerd="KV":"K",1:"L") + Do VULLING(KadObj,Vulling,$G(VullingExtras)) + Do FRONT(KadObj) + Do GREEP(KadObj,Hoogte) + Quit +VOUW(KadObj,KastHoogte,Hoogte,Breedte,ProfType,ProfAfw,Vulling,VullingExtras,DraaiRicht,Deel,Gemonteerd) + Set:'$G(KastHoogte) KastHoogte=Hoogte + Set KadObj.Hoogte=Hoogte + Set KadObj.Breedte=Breedte + Do KadObj.ToepassingSetObjectId(##class(Res.PI.Definitie).IDViaNaam("Toepas")_"||"_$S(Deel="V":"VDV",1:"VDS")) + Do KadObj.ProfTypeSetObjectId(##class(Res.PI.Definitie).IDViaNaam("ProfType")_"||"_ProfType) + Do KadObj.ProfAfwSetObjectId(##class(Res.PI.Definitie).IDViaNaam("ProfAfw")_"||"_ProfAfw) + Do KadObj.OphangPlaatsSetObjectId(##class(Res.PI.Definitie).IDViaNaam("OphangPlaats")_"||"_$S(DraaiRicht="L":"L",1:"R")) + If $G(Gemonteerd)="" Set Gemonteerd=$S(KadObj.ProfType.VulCode="A":"L",1:"KV") + Set KadObj.Gemonteerd=Gemonteerd + Set KadObj.Verpakking=$S(Gemonteerd="KV":"K",1:"L") + Do VULLING(KadObj,Vulling,$G(VullingExtras)) + If Deel="V" Do ; Vouwdeel + . Do SCHARSVDX(KadObj,"V","V") ; Vouwscharnieren + . Do SCHARSVDX(KadObj,"O","V") ; Ophangglijders (boven en onder) + Else Do ; Scharnierdeel + . Do SCHARSVDX(KadObj,"S","S") ; Standaard scharnieren + . Do SCHARSVDX(KadObj,"V","S") ; Vouwscharnieren + . Do GREEP(KadObj,KastHoogte) + Quit +AFBOORD + Quit + +VULLING(KadObj,Vulling,VullingExtras) + New I + Quit:KadObj.ProfType.VulCode="" ; Geen vulling mogelijk + Quit:'$L(Vulling) ; Geen vulling gekozen + Do KadObj.Vulling.VullingSetObjectId(##class(Res.PI.Definitie).IDViaNaam("Vulling")_"||"_Vulling) + Quit:($G(VullingExtras)="") + For I=1:1 Quit:('$L($P(VullingExtras,";",I))) Do + . Do KadObj.Vulling.VullingExtra.InsertObjectId(##class(Res.PI.Definitie).IDViaNaam("VullingExtra")_"||"_$P(VullingExtras,";",I)) + Quit +SCHARSVDX(KadObj,Code,Deel) + New BeslagTabel,emSchar + Set BeslagTabel=##class(Res.PI.Definitie).IDViaNaam("Beslag") + If Code="S" Do ; Voor std deur of scharnierdeel van vouwdeur + . Set emSchar=##class(Prod.GADef.emKadBeslag).%New() + . Do emSchar.BeslagSetObjectId(BeslagTabel_"||"_"FERSSVD") + . Do SCHARSVDXPOS(emSchar,5.5) + . Do KadObj.Beslag.SetAt(emSchar, "S") + . Do emSchar.%Close() + If Code="V",(Deel="S")!(Deel="V") Do ; Voor scharnierdeel en vouwdeel van vouwdeur + . Set emSchar=##class(Prod.GADef.emKadBeslag).%New() + . Do emSchar.BeslagSetObjectId(BeslagTabel_"||"_"TRNVW"_$E(Deel,1)) + . Do SCHARSVDXPOS(emSchar,$S(Deel="S":8.8,1:3.5)) + . Do KadObj.Beslag.SetAt(emSchar, $S(Deel="S":"VC", 1:"VV")) + . Do emSchar.%Close() + If Code="O",Deel="V" Do ; Voor Ophangglijders van vouwdeel van vouwdeur + . ; Ophangglijder boven + . Set emSchar=##class(Prod.GADef.emKadBeslag).%New() + . Do emSchar.BeslagSetObjectId(BeslagTabel_"||"_"TRNRB") + . Do SCHARPOSLIST(emSchar,79,4.1) + . Do KadObj.Beslag.SetAt(emSchar, "VB") + . Do emSchar.%Close() + . ; Ophangglijder onder + . Set emSchar=##class(Prod.GADef.emKadBeslag).%New() + . Do emSchar.BeslagSetObjectId(BeslagTabel_"||"_"TRNRD") ; TERNO ROL DUBBEL (SVEDEX) + . Do SCHARPOSLIST(emSchar,"o-79",4.1) + . Do KadObj.Beslag.SetAt(emSchar, "VO") + . Do emSchar.%Close() + Quit + +SCHARSVDXPOS(emSchar,AfBM) + New Eerste,Volgende,VZ,Middle,lstPos,Hoogte + Set VZ=70/2 ; Hoogte scharnier + Set Eerste=79 + Set Volgende=672+79 + Set Hoogte=+KadObj.Hoogte + Quit:(Hoogte<(Eerste*2)) + If +$G(blnStdDeur) && (Hoogte=1726) Do + . ; Uitzondering: bij deze hoogte slechts 3 scharnieren : 79 - (79+800) - (79+800+768) + . Set lstPos=Eerste + . Set lstPos=lstPos_";"_(79+800) + . Set lstPos=lstPos_";"_(-Eerste) + Else Do + . ; Standaard posities van de scharnieren + . Set lstPos=Eerste + . If Hoogte<(Eerste+Volgende+VZ) Do ; deuren tot 870mm + .. ; KadObj.Hoogte is te klein voor 4 scharnieren. Slechts 2 schar plaatsen. + . Else If Hoogte/2<(Volgende+VZ) Do ; deuren van 870mm tot 1572mm + .. ; Twee middelste scharnieren vallen samen + .. Set lstPos=lstPos_";"_$S(Hoogte/20) emPos.RelLengtePos=posI + . If SameBM Set emPos.AfstandRand=AfBM + . Else Set:($G(AfBM)'="") emPos.AfstandRand=$P(AfBM,";",I) + . Do emSchar.Positie.SetAt(emPos,I) + . Do emPos.%Close() + Quit + +BORING(KadObj,Code,XPos,YPos,Diam,BoringType,XXXPlaatsXXX,BoorDiepte) + New emBoor,Key + Set emBoor=##class(Prod.GADef.emKadBoring).%New() + Set emBoor.XPos=KadObj.AbsPosCalc("X",XPos) + Set emBoor.YPos=KadObj.AbsPosCalc("Y",YPos) + Set:(XPos'>0) emBoor.RelXPos=XPos + Set:(YPos'>0) emBoor.RelYPos=YPos + Set emBoor.BoorDiameter=Diam + Set emBoor.BoorDiepte=$S(Diam<0:0, 1:BoorDiepte) ; Puntboring (diam<0) ==> BoorDiepte=0 + Set emBoor.BoringType=BoringType + + Do KadObj.ControleBoring(emBoor) + Set:($E(emBoor.TxtOpmerking,1,3)'="OK:") emBoor.Opmerking=emBoor.TxtOpmerking + ;Set:(emBoor.BoringPlaats?1"P"1A1";VUL") emBoor.BoorGlasDiameter=9 ; Placed in comment by WimV on 06-04-2005 (in opdracht van JohanB) + Set Key="X" + Do KadObj.Boringen.SetAt(emBoor,$S(Key?.A:Key, 1:"X")_$TR($J(KadObj.Boringen.Count()+1, 2), " ", "0")) + Do emBoor.%Close() + Quit +FRONT(KadObj) ; <<<<< Diameter frontbevestiging + Quit:(KadObj.ProfType.VulCode="A") ; Geen boringen voor Afboordingprofielen + New X,Y,Diam + Set Y=-$S(KadObj.OphangPlaats.ItemID="I":18,1:25) + Set X=15 + Set Diam=-1 + Do BORING(KadObj,"", X,Y, Diam,"ON","",0) + Do BORING(KadObj,"", X,Y-64, Diam,"ON","",0) + Do BORING(KadObj,"", -X,Y, Diam,"ON","",0) + Do BORING(KadObj,"", -X,Y-64, Diam,"ON","",0) + Quit +GREEP(KadObj,TotHoogte) + Quit:(KadObj.ProfType.ItemID="P02") ; Geen greep boren voor smalle afboordingsprofielen + New XPos,YPos,Diam + If KadObj.Toepassing.ItemID="LF",$L(KadObj.Vulling.Vulling) Do ; LadeFront + . Set YPos="c" + . Set Diam=7 + . If KadObj.Breedte>500 Do ; 2 grepen ipv van 1 + .. Do BORING(KadObj,"", 100-16,YPos, Diam,"ON","",-1) + .. Do BORING(KadObj,"", 100+16,YPos, Diam,"ON","",-1) + .. Do BORING(KadObj,"", -100+16,YPos, Diam,"ON","",-1) + .. Do BORING(KadObj,"", -100-16,YPos, Diam,"ON","",-1) + . Else Do ; 1 greep + .. Do BORING(KadObj,"", "c+16",YPos, Diam,"ON","",-1) + .. Do BORING(KadObj,"", "c-16",YPos, Diam,"ON","",-1) + .; + Else If (KadObj.Toepassing.ItemID="KD")!(KadObj.Toepassing.ItemID="VDS") Do ; Standaard deur of Vouwdeur-scharnierdeel + . Set XPos=$S(KadObj.OphangPlaats.ItemID="R":22.5,1:-22.5) + . Set Diam=5 + . If TotHoogte=KadObj.Hoogte Do + .. Do BORING(KadObj,"", XPos,"c-96" , Diam,"ON","",-1) + .. Do BORING(KadObj,"", XPos,"c+96" , Diam,"ON","",-1) + . Else Do + .. Set YPos=TotHoogte/2-96 + .. Do BORING(KadObj,"", XPos,YPos , Diam,"ON","",-1) + .. Do BORING(KadObj,"", XPos,YPos+192, Diam,"ON","",-1) + Quit \ No newline at end of file Index: Prod/GAMeta/Struct/tmpDev.mac.rou =================================================================== diff -u --- Prod/GAMeta/Struct/tmpDev.mac.rou (revision 0) +++ Prod/GAMeta/Struct/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,52 @@ +BuildHierarch2 ; Parameters: Ref,Product + Kill @Ref + New tmpAr,iG,iS,lbExprHG,lbExprG,lbExprS,MetaG,MetaS + New Version + Set Version=1 + Set tmpAr(1)=%this + Set lbExprHG=$$bhiExprToList(..ChildExpr) + Set KeyG="" + For Set MetaG=..Groepen.GetNext(.KeyG) Quit:(KeyG="") Do + . Set iG=$LF(lbExprHG,MetaG.Code) + . Set tmpAr(1,iG)=MetaG + . Set LBExprS=$$bhiExprToList(MetaG.ChildExpr) + . Set KeyS="" + . For Set MetaS=MetaG.SubGroepen.GetNext(.KeyS) Quit:(KeyS="") Do + .. Set iS=$LF(LBExprS,MetaS.Code) + .. Set tmpAr(1,iG,iS)=MetaS + Merge @Ref=tmpAr + Quit + + +BuildHierarch ; Parameters: Ref,Product + Quit + Kill @Ref + New tmpAr,iG,iS,iI,LBExprG,LBExprS,LBExprI,MetaG,MetaS,MetaI,tmpLU + New Version + Set Version=1 + Set tmpAr(1)=$LB(..Code) + Set LBExprG=$$bhiExprToList(..ChildExpr) + For iG=1:1:$LL(LBExprG) Do + . Set MetaG=..GroepenGetChildAt($LI(LBExprG,iG)_"||"_Version) + . Quit:('MetaG) + . Set tmpAr(1,iG)=$LB(MetaG.Code, $LI(LBExprG,iG)_"||"_Version) ; $LI(LBExprG,iG) + . Set LBExprS=$$bhiExprToList(MetaG.ChildExpr) + . For iS=1:1:$LL(LBExprS) Do + .. Set MetaS=MetaG.SubGroepenGetChildAt($LI(LBExprS,iS)_"||"_Version) + .. Quit:('MetaS) + .. Set tmpAr(1,iG,iS)=$LB(MetaS.Code, $LI(LBExprS,iS)_"||"_Version) ; $LI(LBExprS,iS) + .. Set LBExprI=$$bhiExprToList(MetaS.ChildExpr) + .. For iI=1:1:$LL(LBExprI) Do:($$bhiItemExists($LI(LBExprI,iI),Version)) + ... Set tmpAr(1,iG,iS,iI)=$LB($LI(LBExprI,iI), $LI(LBExprI,iI)_"||"_Version) + Merge @Ref=tmpAr + Quit +bhiExprToList(sExpr) + ; Analyse Expression + New i,LB + Set LB="" + For i=1:1:$L(sExpr,"+") Set LB=LB_$LB($P(sExpr,"+",i)) + Quit LB +bhiItemExists(ItemCode,Version) + If +$G(Product) Quit (Product.DataItemsGetChildAt(ItemCode)>0) + Else Quit ##class(Prod.GAMeta.Item).%ExistsId(ItemCode_"||"_Version) + Quit 0 \ No newline at end of file Index: BL/Prod/GAData/TestWV.mac.rou =================================================================== diff -u -r762 -r1152 --- BL/Prod/GAData/TestWV.mac.rou (.../TestWV.mac.rou) (revision 762) +++ BL/Prod/GAData/TestWV.mac.rou (.../TestWV.mac.rou) (revision 1152) @@ -1,7 +1,6 @@ #include %VHMacro #include %occInclude - ; Oproepen via : ; d ShowXML^BL.Prod.GAData.TestWV() ShowXML() Index: BL/PR/GA/TB/tmpDev2.mac.rou =================================================================== diff -u -r901 -r1152 --- BL/PR/GA/TB/tmpDev2.mac.rou (.../tmpDev2.mac.rou) (revision 901) +++ BL/PR/GA/TB/tmpDev2.mac.rou (.../tmpDev2.mac.rou) (revision 1152) @@ -265,7 +265,7 @@ Quit:(sDomVERW'="VHEPN") ; Only for safety Do:($$$DelimByDC($G($$$KLDataExtra("NMAK")))=1) ..BTValues.SetAt(1,"NMAfdekkap") ; KLNrProd <--> WS.KLNummer Do:($G($$$GlobalKLData(0,sDomVERW,KLNrProd,"SR"))?1"V") ..BTValues.SetAt($$$GlobalKLData(0,sDomVERW,KLNrProd,"SR"),"TBStalenRug") - Set:($G($$$GlobalKLData(0,sDomVERW,KLNrProd,"MATKL1239"))="HA")&&($G(arKenm("TBBodemKleur"))="LGS")&&($G(arKenm("TBLadeDiepte"))?1(1"500")) arKenm("PlaatMat")="HA" ; Bodems Keller gebruiken : "Halux Afgewerkt" i.p.v. "Halux Stroken" // Copied from class BL.Flow.Offerte.ProductGAData for calc. via Excel + Set:($G($$$GlobalKLData(0,sDomVERW,KLNrProd,"MATKL1239"))="HA")&&($G(arKenm("TBBodemKleur"))="LGS") arKenm("PlaatMat")="HA" ; Bodems Keller gebruiken : "Halux Afgewerkt" i.p.v. "Halux Stroken" // Copied from class BL.Flow.Offerte.ProductGAData for calc. via Excel Quit bfwCalcProductsInit Index: Prod/Product/KPRPropViaNr.mac.rou =================================================================== diff -u --- Prod/Product/KPRPropViaNr.mac.rou (revision 0) +++ Prod/Product/KPRPropViaNr.mac.rou (revision 1152) @@ -0,0 +1,114 @@ + ; Via onderstaande labels worden de properties gelinked (gemapped) met de global ^KPR + ; "prop"_PropName --> ;Node;Piece van ^KPR(PRNr) + +propGAProdID ;G;13 +propKortTekst ;0;1 +propCifPPL ;J;23 +propLijstPrijs ;J;25 +propLEVNr ;J;1 +propVerpakProduct ;J;32 +propVerpakQty ;J;33 +propStock ;1;20 +PropOpslagZone ;2;15 +propKlasHoofdGroep ;I;1;$E(Val,1,4) +propKlasGroep ;I;2;$E(Val,5,9) +propKlasSubGroep ;I;3;$E(Val,10,18) +propHFReservatie ;@;$P(^PRSTOCK("D",PRNr),"\",6) +propHFVoorraad ;@;$P(^PRSTOCK("D",PRNr),"\",5) +propHFHerbestelWijze ;15;3 +propHFHerbestelPunt ;15;4 +propHFHerbestelAantal ;15;5 +propHFHerbestelAfr ;15;6 +propHFNettoLengte ;15;7 +propHFBrutoLengte ;15;8 +propHFEenheid ;15;9 +propHFMetaTag ;15;10 +propHFDefMagazijn ;15;11 +propHFSubMagazijn ;15;12 +propNettoGewicht ;X;$LI($$gpvGewicht(PRNr),1) +propTarraGewicht ;X;$LI($$gpvGewicht(PRNr),2) +propBrutoGewicht ;X;$LI($$gpvGewicht(PRNr),3) +propGENTYPFG ;X;$$gpvGENTYPShort(PRNr) +propGENTYP ;X;$$gpvGENTYP(PRNr) +propKindMoeder ;@;$S($D(^PRLINK("D",PRNr)):"M",$D(^PRLINK("IK",PRNr)):"K",1:"E") +propProductGroep ;X;$$gpvProdGrp(PRNr) + +GetPropViaNr() ; Parameters: PRNr,PropName + Quit:(PRNr="") "" + New Txt,Key,Val + Set Txt=$T(@("prop"_PropName)) + Quit:(Txt="") "#Onbekend property "_PropName_"#" + Quit:('$D(^KPR(PRNr))) "#Onbekend product "_PRNr_"#" + Set Key=$P(Txt,";",2) + If (Key="@")||(Key="X") Do Quit Val + . X "Set Val="_$P(Txt,";",3,99) + Set:("I;J"[Key) Key=$O(^KPR(PRNr,Key)) + Quit:("I;J"[$P(Txt,";",2))&&($E(Key)'=$P(Txt,";",2)) "#Ontbrekende node "_$P(Txt,";",2)_"#" + If $P(Txt,";",4)="" Quit $P($G(^KPR(PRNr,Key)),"\",$P(Txt,";",3)) + Else Do + . Set Val=$P($G(^KPR(PRNr,Key)),"\",$P(Txt,";",3)) + . X "Set Val="_$P(Txt,";",4,99) + Quit Val + +SetPropViaNr() ; Parameters: PRNr,PropName,Val + Quit:(PRNr="") 1 + Quit:('$D(Val)) 1 + New Txt,Key + Set Txt=$T(@("prop"_PropName)) + Quit:(Txt="") "#Onbekend property "_PropName_"#" + Quit:('$D(^KPR(PRNr))) "#Onbekend product "_PRNr_"#" + Set Key=$P(Txt,";",2) + Quit:(Key="X") 0 + If (Key="@") Do Quit 1 + . X "Set "_$P(Txt,";",3,99)_"=Val" + Set:("I;J"[Key) Key=$O(^KPR(PRNr,Key)) + Quit:("I;J"[$P(Txt,";",2))&&($E(Key)'=$P(Txt,";",2)) "#Ontbrekende node "_$P(Txt,";",2)_"#" + Set $P(^KPR(PRNr,Key),"\",$P(Txt,";",3))=Val + Quit 1 + + +gpvGewicht(PRNr) + Quit:(PRNr="") "" + New ID,BLRec,BG,NG + If $D(^KPR(PRNr,"J5005")) Do ; een BLUM product + . Set ID=$TR($P(^KPR(PRNr,2),"\",25),".","") + . Set $E(ID)=0 + . Set BLRec=$G(^BLProd("D",ID)) + . Set BG=$P(BLRec,"\",9) + . Set NG=$P(BLRec,"\",26) + If $G(NG)="" Set (BG,NG)=$P($G(^KPR(PRNr,1)),"\",13) ; Indien niet gedefinierd + Quit $LB(NG, BG-NG, BG) + +gpvGENTYPShort(PRNr) + ; Geeft enkel FabGrp terug + New GenPRNr + Set GenPRNr=$P(^KPR(PRNr,0),"\",3) + Quit:(GenPRNr="") "" + Set:GenPRNr'?4.7N GenPRNr=PRNr ; het is reeds het generisch product + Quit $P($G(^KPR(GenPRNr,"G")),"\",1,3) + +gpvGENTYP(PRNr) + New Typ,GenPRNr,SubGrp + Set GenPRNr=$P($G(^KPR(PRNr,0)),"\",3) + Quit:GenPRNr="" "" + Set:GenPRNr'?4.7N GenPRNr=PRNr ; het is reeds het generisch product + Set Typ=$P($G(^KPR(GenPRNr,"G")),"\",1,3) + Set SubGrp=$P($G(^KPR(PRNr,"G")),"\",3) + Set:$L(SubGrp)=3 $P(Typ,"\",2)=SubGrp + Quit Typ ;FabGrp\FabSubGrp\BarcodeBegin + +gpvProdGrp(PRNr) + New Groep,GenTyp,Key + Set LevNr=$E($O(^KPR(PRNr,"J")),2,5) + If LevNr=5005 Quit "BLUM" + If LevNr=6502 Quit "GRP" + If LevNr=6332 Do Quit Groep ; HALUX + .Set Groep="HAL" + .Set GenTyp=$$gpvGENTYP(PRNr) + .If GenTyp["GRP" Set Groep="GRP" + .If GenTyp["TBX" Set Groep="TBX" + Set Key=$O(^KPR(PRNr,"I")) + If $E(Key)="I",$P(^KPR(PRNr,Key),"\")["OL" Quit "OL" + Quit "REST" + + \ No newline at end of file Index: Prod/GADef/emKadBoring/tmpDev.mac.rou =================================================================== diff -u --- Prod/GADef/emKadBoring/tmpDev.mac.rou (revision 0) +++ Prod/GADef/emKadBoring/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,15 @@ + +CalcLPos(GADefProd,%this) + Quit $Case($E(%this.BoringPlaats,1,2), "PL":%this.YPos, "PR":GADefProd.Hoogte-%this.YPos, "PB":GADefProd.Breedte-%this.XPos, "PO":%this.XPos, :"") + +CalcRandPos(GADefProd,%this) + Quit:(%this.BoringType="IN")!(%this.BoringType="EX") %this.BoringType_":"_%this.ZPos + Quit $Case($E(%this.BoringPlaats,1,2), "PL":%this.XPos, "PR":GADefProd.Breedte-%this.XPos, "PB":%this.YPos, "PO":GADefProd.Hoogte-%this.YPos, :"") + +CalcHoogtePos(GADefProd,blnOpposite,%this) + New BT + Set BT=%this.BoringType + Set:(blnOpposite) BT=$CASE(BT, "ON":"BO", "EX":"IN", :BT) + Quit:('GADefProd.ProfType)&("BO;IN"[BT) 0 + Quit $CASE(BT, "ON":0, "BO":GADefProd.ProfType.Dikte, "IN":GADefProd.ProfType.Breedte, "EX":0, 1:0) + \ No newline at end of file Index: Prod/Kenmerk/Utils/tmpDev.mac.rou =================================================================== diff -u --- Prod/Kenmerk/Utils/tmpDev.mac.rou (revision 0) +++ Prod/Kenmerk/Utils/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,302 @@ +#include %VHMacro +#include BL.Kenm.Common + + ;Do TBXKenmerkVTL^Prod.Kenmerk.Utils.tmpDev +TBXKenmerkVTL + New GroepID,lbKenm,i,j,TaalDFL,VTLType,VTLGroep + Set GroepID="TB" + Set VTLType="K" + Set VTLGroep=$$tvkGetVTLGroep(GroepID) + Set TaalDFL=##class(Res.PI.Taal).BasisTaalID() + Set lbKenm=$LB("BasisType","Design","FBevestiging","FrontType","GlijderType","Kleur","LiRe","Opties","RugHoogte","Verpakking","ZijwandHoogte") + For i=1:1:$LL(lbKenm) Do tkvWaardenPerKenm($LG(lbKenm,i)) + w !,"Create VTL's finished.",! + Quit +tvkGetVTLGroep(GroepID) + New GrpObj,VTLGroep + Set GrpObj=##class(Prod.Kenmerk.MetaGroep).%OpenId(GroepID) + Quit:('GrpObj) "" + Set VTLGroep=GrpObj.VertalingsGroep + Do GrpObj.%Close() + Quit VTLGroep +tkvWaardenPerKenm(Kenm) + Quit:(Kenm="") + w !,!,"Voor Kenmerk "_Kenm_": Create VTL's" + New lbWaarden + &SQL(DECLARE crsTBX CURSOR FOR SELECT DISTINCT(Waarden) INTO :lbWaarden FROM Prod_Kenmerk.DataDefinitie WHERE Kenmerk=(:GroepID || '||' || :Kenm) ) + &SQL(OPEN crsTBX) + For &SQL(FETCH crsTBX) Quit:(SQLCODE) Do tkvCreateVTLItemLB(lbWaarden,Kenm) + &SQL(CLOSE crsTBX) + Quit +tkvCreateVTLItemLB(lbWaarden,Kenm) + For j=1:1:$LL(lbWaarden) + . Do tkvCreateVTLItem(Kenm_"-"_$LG(lbWaarden,j)) ; ,VTLGroep,VTLType,TaalDFL) + Quit +tkvCreateVTLItem(InternWde) ; ,VTLGroep,VTLType,TaalDFL) + w !,InternWde + Quit:(##class(Res.Vertaling).%ExistsId(VTLGroep_"||"_InternWde_"||"_VTLType_"||"_TaalDFL)) + New objVTL,SaveRs + Set objVTL=##class(Res.Vertaling).%New() ; ID wordt VTLGroep_"||"_InternWde_"||"_VTLType_"||"_TaalDFL) + Do objVTL.GroepSetObjectId(VTLGroep) + Set objVTL.Intern=InternWde + Do objVTL.TypeSetObjectId(VTLType) + Do objVTL.TaalSetObjectId(TaalDFL) + Set SaveRs=objVTL.%Save() + w " Vertaling: object Save:"_SaveRs + Write:('SaveRs) SaveRs_" - Fout bij bewaren van Vertaling met ID: "_VTLGroep_"||"_InternWde_"||"_VTLType_"||"_Taal,! + Do objVTL.%Close() + Quit + + + ;Do ImportSleutelVTL^Prod.Kenmerk.Utils.tmpDev +ImportSleutelVTL + New ArPR,PRNr,UnID,objVTL,GroepID,DataID,SleutelVal,lbWaarden,TxtN1,TxtN2,TxtN3,TxtF1,TxtF2,TxtF3,OmsNL,OmsFR,Oms + New VTLGroep,MetaGroep + Set GroepID="OL" + Set MetaGroep=##class(Prod.Kenmerk.MetaGroep).%OpenId(GroepID) + Set VTLGroep=MetaGroep.VertalingsGroep + Do MetaGroep.%Close() + ;Lijst van UnID's: + Do ##class(Prod.Kenmerk.DataIndex).SPAlle(GroepID,"ArPR") ; Array opbouwen van alle producten + Set UnID="" + For Set UnID=$O(ArPR(UnID)) Quit:(UnID="") Do + . Set (lbWaarden,TxtN1,TxtN2,TxtN3,TxtF1,TxtF2,TxtF3)="" + . Set PRNr=$S(##class(BL.Kenm.ProdMulti).AllowsMultiple(GroepID):##class(BL.Kenm.ProdMulti).GetCommonID(UnID), 1:UnID) + . ; Ophalen van de Interne Waarde van de "Sleutel" (=tekstsleutel) + . Set DataID=UnID_"||"_GroepID_"||Sleutel" + . &sql(SELECT Waarden INTO :lbWaarden FROM Prod_Kenmerk.DataDefinitie WHERE (ID=:DataID)) + . Set SleutelVal=$LG(lbWaarden,1) + . ; Ophalen van de vertalingen uit het Mumps productenbestand + . // SELECT OmschrijvingN1,OmschrijvingN2,Orderreferenties3N,OmschrijvingF1,OmschrijvingF2,Orderreferenties3F INTO :TxtN1,:TxtN2,:TxtN3,:TxtF1,:TxtF2,:TxtF3 + . &sql(SELECT OmschrijvingN1,OmschrijvingN2 INTO :TxtN1,:TxtN2 FROM Prod.Product WHERE (ID=:PRNr)) + . Set OmsNL=$$isvConcatTxt(TxtN1,TxtN2,TxtN3) + . Set OmsFR=$$isvConcatTxt(TxtF1,TxtF2,TxtF3) + . Do isvVertaling(SleutelVal,"N",OmsNL) + . Do isvVertaling(SleutelVal,"F",OmsFR) + Quit +isvConcatTxt(Txt1,Txt2,Txt3) + Set Oms=Txt1 + Set Oms=Oms_$S($L(Oms)&$L(Txt2):$C(13,10), 1:"")_Txt2 + Set Oms=Oms_$S($L(Oms)&$L(Txt3):$C(13,10), 1:"")_Txt3 + Quit Oms +isvVertaling(Intern,Taal,Waarde) + If ##class(Res.Vertaling).%ExistsId(VTLGroep_"||"_Intern_"||O||"_Taal) Do + . Set objVTL=##class(Res.Vertaling).%OpenId(VTLGroep_"||"_Intern_"||O||"_Taal) + Else Do + . Set objVTL=##class(Res.Vertaling).%New(VTLGroep_"||"_Intern_"||O||"_Taal) + . Do objVTL.GroepSetObjectId(VTLGroep) + . Set objVTL.Intern=Intern + . Do objVTL.TypeSetObjectId("O") + . Do objVTL.TaalSetObjectId(Taal) + + Quit:('objVTL) + If '$L(objVTL.Vertaling) Do + . Set objVTL.Vertaling=Waarde + . Set SaveRs=objVTL.%Save() + . Write:('SaveRs) SaveRs_" - Fout bij bewaren van Vertaling met ID: "_VTLGroep_"||"_Intern_"||O||"_Taal + Do objVTL.%Close() + Quit + + + +PRLijstViaCriteriaExtra ; Parameters: GroepID,Ref,CriteriaArray,BeperkLastKM,arLastKMVal +#define CVTBool(%v) (+%v'=0) + Kill arLastKMVal + If ($D(CriteriaArray("UnID")))||($D(CriteriaArray("PRNr"))) Do + . ; 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 blnUndefs ; ,ArKM + . Set blnUndefs=$$$CVTBool($G(CriteriaArray("IncludeUndefs",1))) + . Kill @Ref + . Kill ArKM + . Merge ArKM=CriteriaArray + . Do ##class(Prod.Kenmerk.Utils).FilterKenmerken(GroepID,.ArKM) + . If $L($G(BeperkLastKM))&&($D(ArKM(BeperkLastKM))) Do + .. New tmpCArray,LBSortedVal,i + .. Set i="" + .. Merge tmpCArray(BeperkLastKM)=ArKM(BeperkLastKM) ; temp array met LastKM. Wordt achteraf beperkt + .. ; Beperken tot alle behalve het laatste Kenmerk + .. Kill ArKM(BeperkLastKM) + .. ;d WL^vhDBG("Na splitsen:"_$$$ArrayTT("ArKM")_$$$ArrayTT("tmpCArray")) + .. Do ##class(Prod.Kenmerk.Utils).PRLijstViaKenmerk(GroepID,Ref,.ArKM,blnUndefs) + .. ; Lijst van alle waarden voor het laatste kenmerk van alle nog aanwezige producten + .. Set LBSortedVal=##class(Prod.Kenmerk.DataIndex).SPKenmerkWaardenLB(GroepID,BeperkLastKM,.@Ref,1) + .. Set arLastKMVal("SORTED","ALL")=LBSortedVal + .. Set arLastKMVal("SORTED","KMVAL")=$G(tmpCArray(BeperkLastKM)) + .. For Set i=$O(tmpCArray(BeperkLastKM,i)) Quit:(i="") Set arLastKMVal("SORTED","KMVAL")=arLastKMVal("SORTED","KMVAL")_$LB($G(tmpCArray(BeperkLastKM,i))) + .. ;d WL^vhDBG("Values"_$$$ArrayTT("arLastKMVal")) + .. ; Beperking op LastKM toepassen: + .. Do:($D(@Ref)) ##class(Prod.Kenmerk.Utils).PRLijstViaKenmerk(GroepID,Ref,.tmpCArray,blnUndefs) + . Else Do + .. Do ##class(Prod.Kenmerk.Utils).PRLijstViaKenmerk(GroepID,Ref,.ArKM,blnUndefs) + ; Groeperen op Kenmerken + Do ##class(Prod.Kenmerk.Utils).GroepeerOpKenmerk(GroepID,.@Ref) + Quit + +PRLijstViaCriteria ; Parameters: GroepID,Ref,CriteriaArray +#define CVTBool(%v) (+%v'=0) + If ($D(CriteriaArray("UnID")))||($D(CriteriaArray("PRNr"))) Do + . ; 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 blnUndefs ; ,ArKM + . Set blnUndefs=$$$CVTBool($G(CriteriaArray("IncludeUndefs",1))) + . Kill @Ref + . Kill ArKM + . Merge ArKM=CriteriaArray + . Do ##class(Prod.Kenmerk.Utils).FilterKenmerken(GroepID,.ArKM) + . Do ##class(Prod.Kenmerk.Utils).PRLijstViaKenmerk(GroepID,Ref,.ArKM,blnUndefs) + ; Groeperen op Kenmerken + Do ##class(Prod.Kenmerk.Utils).GroepeerOpKenmerk(GroepID,.@Ref) + Quit + +FilterKenmerken ; Parameters: GroepID,KenmerkArray + New rs,LBKenm,Kenm + Set LBKenm="" + Set rs=##class(%ResultSet).%New("Prod.Kenmerk.MetaDefinitie:LijstPerGroep") + Do rs.Execute(GroepID) + For Quit:('rs.Next()) Set LBKenm=LBKenm_$LB(rs.Data("Kenmerk")) + Do rs.%Close() + ; LBKenm is een lijst met alle Kenmerken van de groep GroepID + Set Kenm="" + For Set Kenm=$O(KenmerkArray(Kenm)) Quit:(Kenm="") Do + . If $LF(LBKenm,Kenm)=0 Kill KenmerkArray(Kenm) ; Kenm is geen correct Kenmerk van de groep + Quit + + +PRLijstViaKenmerk ; Parameters: GroepID,Ref,KenmerkArray,IncludeUndefs +#define CompareType "C" + New Kenm,i,objKenm,objCompare + ; Array opbouwen van alle producten + Do:('$D(@Ref)) ##class(Prod.Kenmerk.DataIndex).SPAlle(GroepID,Ref) + ; Array beperken voor ieder ieder kenmerk van KenmerkArray + Set Kenm="" + For Set Kenm=$O(KenmerkArray(Kenm)) Quit:(Kenm="") Do + . Set objKenm=##class(Prod.Kenmerk.MetaDefinitie).%OpenId(GroepID_"||"_Kenm) + . Set:(IncludeUndefs) objCompare=$S(objKenm:objKenm.GetVTLTransformByType($$$CompareType), 1:"") + . ; - Beperking op waarde van de subnodes + . Set i="" + . For Set i=$O(KenmerkArray(Kenm,i)) Quit:(i="") Do lvkBeperk(KenmerkArray(Kenm,i)) + . ; - Beperking op waarde van node (Kenm) + . If $D(KenmerkArray(Kenm))#10 Do lvkBeperk(KenmerkArray(Kenm)) + . Do:(objKenm) objKenm.%Close() + Quit +lvkBeperk(KWaarde) + If IncludeUndefs Do ##class(Prod.Kenmerk.DataIndex).SPBeperk(GroepID,Kenm,KWaarde,Ref,$G(objCompare)) + Else Do ##class(Prod.Kenmerk.DataIndex).SPBeperkExcl(GroepID,Kenm,KWaarde,Ref) + Quit + + +GroepeerOpKenmerk ; Parameters: GroepID,PRNrArray +#define lstEXTRA "WandDikte;Kleur" +#define SPLIT "||" +#define QUOTEDSPLIT """||""" +#define XTDSPLIT ",""||""" + + ;d WLIP^vhDBG(97,"GroepeerOpKenmerk") + Set GroepID="OL" + ;Do Start^TRTimer + New UnID,BeperkAr,BeperkAr2,lstKeys,i,j,D,LBSortKenm,CntKenm,sQry,tmpQry,PrevQry + New KWdnSort,NumAr + Set D="\" + Set CntKenm=$$gokSortKenm() ; Maakt ook LBSortKenm aan en KWdnSort + + Set UnID="" + For Set UnID=$O(PRNrArray(UnID)) Quit:(UnID="") Do + . Set lstKeys=##class(Prod.Kenmerk.Utils).SortWaarden(UnID,LBSortKenm,D,.KWdnSort) + . ;Set $P(lstKeys,D,$LF(LBSortKenm,$$$SPLIT))=$$$SPLIT + . Set $P(lstKeys,D,$LF(LBSortKenm,$$$SPLIT))=$$$QUOTEDSPLIT + . Set $P(lstKeys,D,CntKenm+1)=UnID + . ; dit product invullen in BeperkAr + . Do gokFillNodeNum + + ; Reduceren van de Array door de Basis-nodes te vervangen door ��n volgnummer + Set i=0 + Set PrevQry="" + Set sQry="BeperkAr" + For Set sQry=$Q(@sQry) Quit:(sQry="") Do + . Set tmpQry=$E(sQry,1,$F(sQry_$$$XTDSPLIT,$$$XTDSPLIT)-1)_")" + . If tmpQry'=PrevQry Do + .. Merge BeperkAr2($INCREMENT(i))=@tmpQry + .. Set PrevQry=tmpQry + .. Set NumAr(i)=$P($P(sQry,"(",2),",",1) ; _"."_$P($P(sQry,"(",2),",",2) + + ; Kenmerken Extra vervangen door ��n volgnummer (= tweede node) + Kill BeperkAr + Set i="" + Set PrevI="" + Set sQry="BeperkAr2" + For Set sQry=$Q(@sQry) Quit:(sQry="") Do + . Set i=$P($P(sQry,"(",2),",",1) ; Eerste node (=incremented counter + . Set UnID=$TR($$$LastPiece(sQry,","), ")","") ; Laatste node + . If i'=PrevI Do + .. Set j=0 + .. Set PrevI=i + .. Set BeperkAr(i,1,"NDX")=NumAr(i) + . Set BeperkAr(i,$INCREMENT(j))=UnID + + Kill PRNrArray + Merge PRNrArray=BeperkAr + Kill BeperkAr + Kill BeperkAr2 + ;Do Stop^TRTimer + ;Write !,"Tijd voor Groeperen (New): "_$$GetTime^TRTimer(),! + Quit +gokFillNode ;(lstKeys) + ; Vult in BeperkAr de uitgebreide node-structuur in + ; Lege pieces door 0 vervangen + For i=1:1:$L(lstKeys,D) Set:($P(lstKeys,D,i)="") $P(lstKeys,D,i)=0 + ; Niet-numerieke waarden tussen "" zetten + For i=1:1:$L(lstKeys,D) Set:('$IsValidNum($P(lstKeys,D,i))) $P(lstKeys,D,i)=""""_$P(lstKeys,D,i)_"""" + ; Komma's vervangen door punt-komma's ("," ==> ";") en dan Delimiters vervangen door komma's (D ==> ",") + Set lstKeys=$TR($TR(lstKeys,",",";"),D,",") + X "Set BeperkAr("_lstKeys_")="""" " + Quit +gokFillNodeNum ;(lstKeys) + ; Vult in BeperkAr de uitgebreide node-structuur in + ; Lege pieces door 0 vervangen + For i=1:1:$L(lstKeys,D) Set:($P(lstKeys,D,i)="") $P(lstKeys,D,i)=0 + ; Delimiters vervangen door komma's (D ==> ",") + Set lstKeys=$TR(lstKeys,D,",") + X "Set BeperkAr("_lstKeys_")="""" " + Quit +gokSortKenm() + ; Gesorteerde lijst opbouwen van alle Kenmerken van de Groep. + ; Kenmerken worden wel gesplitst in Basis en Extra + New rs,LBBasis,LBExtra,i,Kenm + Set (LBBasis,LBExtra)="" + Set rs=##class(%ResultSet).%New("Prod.Kenmerk.MetaDefinitie:LijstPerGroep") + Do rs.Execute(GroepID) + For Quit:('rs.Next()) Do + . Set Kenm=rs.Data("Kenmerk") + . Quit:(Kenm=$$$KenmMultiPRNr) + . If ($$$lstEXTRA[Kenm) Set LBExtra=LBExtra_$LB(Kenm) + . Else Set LBBasis=LBBasis_$LB(Kenm) + . If 'rs.Data("LenWdSort2") Do + . . Set KWdnSort(Kenm)=rs.Data("WaardenSortering") + . Else Do + . . Set KWdnSort(Kenm)=##class(Prod.Kenmerk.MetaDefinitie).GetWaardenSortering(rs.Data("ID")) + Do rs.%Close() + Set rs="" + Quit:($LI(LBBasis,1)="") "Error: probably something wrong with the Query. Also check if WaardenSort is not too long" ; by WimV on 24/09/2008 + ; Samenvoegen van Basis en Extra, gescheiden door $$$SPLIT + Set LBSortKenm=LBBasis_$LB($$$SPLIT)_LBExtra + Quit $LL(LBSortKenm) + + +SortWaarden() ; Parameters: UnID,LBSortKenm,Delimiter + Quit ErrorCrashBoomBang + // Call via this routine is deprecated. + +DeleteViaPRNr() + Quit ErrorCrashBoomBang + // Call via this routine is deprecated. Use following method call instead + ;Set sc=##class(Prod.Kenmerk.DataDefinitie).DeleteViaUnID(UnID,.lbGroepIDs) + + + + + \ No newline at end of file Index: Prod/Kenmerk/MetaDefinitie/LoadObjects.mac.rou =================================================================== diff -u --- Prod/Kenmerk/MetaDefinitie/LoadObjects.mac.rou (revision 0) +++ Prod/Kenmerk/MetaDefinitie/LoadObjects.mac.rou (revision 1152) @@ -0,0 +1,334 @@ +#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") + Else If Groep="TBX" Do + . Set Mdata(Groep,"MG")=$LB("TandemBOX op Maat") + Else If Groep="GRP" Do + . Set Mdata(Groep,"MG")=$LB("Greep op Maat") + Else If Groep="TLM" Do + . Set Mdata(Groep,"MG")=$LB("Verlichting op Maat") + Else If Groep="ALK" Do + . Set Mdata(Groep,"MG")=$LB("ALU Kaderdeur") + 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("ODSP",,,,,"Onderdelen Speciaal","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",) + If Groep="ALK" Do + . ;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("Actief") + . Set Mdata(Groep,"MD",$$$iINC)=$LB("BasisType") + . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""BasisType-""_X") + . Set Mdata(Groep,"MD",$$$iINC)=$LB("Design") + . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""Design-""_X") + . Set Mdata(Groep,"MD",$$$iINC)=$LB("Kleur") + . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""Kleur-""_X") + . Set Mdata(Groep,"MD",$$$iINC)=$LB("Opties") + . Set Mdata(Groep,"MD",i,"VTT","K")= $LB("@","""Opties-""_X") + 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\UnID\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() + Set DDef.UnID=$P(Params,"\",3) ; UnID + ;Do DDef.ProductSetObjectId($P(Params,"\",3)) ; UnID + 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) + + // Oproepen via Do DeleteDataDef^Prod.Kenmerk.MetaDefinitie.LoadObjects("OL") +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,UnID,i,L,tmpLB,lbNew + Set MDefID=$G(GroepID)_"||"_$G(Kenmerk) + Set %ProdKenm=1 + Set lbWSort=##class(BL.Kenm.Main).GetWaardenSort(GroepID,Kenmerk) + Kill %ProdKenm + ; &sql(SELECT WaardenSortering INTO :lbWSort FROM Prod_Kenmerk.MetaDefinitie WHERE (ID=:MDefID)) + Quit:($G(lbWSort)="") "" + Set L=$LL(lbWSort) + Set UnID="" + For Set UnID=$O(^Prod.Ken.DataDefinitieD(UnID)) Quit:(UnID="") Do + . Set tmpLB=$LG($G(^Prod.Ken.DataDefinitieD(UnID,MDefID)),1) + . Quit:(tmpLB="") ; ||($LL(tmpLB)=1) DIT MOET DE NIEUWE VERSIE WORDEN: Zinloos om 1 waarde te sorteren, dus ook niet wijzigen in de Global + . 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 "--> ("_UnID_") "_$$$LCVT(lbNew),! + . Set $LI(^Prod.Ken.DataDefinitieD(UnID,MDefID),1)=lbNew + . ;s:(UnID=58790) UnID=$O(^Prod.Ken.DataDefinitieD(""),-1) ; Quit early, temp!!! + Quit $$$OK \ No newline at end of file Index: BL/PR/GA/TLM/tmpDev.mac.rou =================================================================== diff -u --- BL/PR/GA/TLM/tmpDev.mac.rou (revision 0) +++ BL/PR/GA/TLM/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,563 @@ +#include PRGACNTs + /* + // +-+-+-+-+-+-+-+-+-+-+-+-+ + // + TLM - Verlichting + + // +-+-+-+-+-+-+-+-+-+-+-+-+ + */ + + ; Test-commands + Do KillAllObjects^%apiOBJ() + Set tlm=##class(BL.PR.GA.Verlichting).%New() + Do tlm.Initialize() + ;Do tmpInitFill(tlm) + Quit +tmpInitFill(tlm) + Do tlm.ResizeTL(2800) + Do tlm.SetNewPos(2,"TL",1013, 30,"B") + Do tlm.SetNewPos(4,"TL",1035, 620,"B") + Do tlm.SetNewPos(6,"TL",1008, 2130,"B") + Quit + + +Initialize ; Parameters: geen +BuildLookup ; Parameters: .LookupArray +SwizzleTL + + // ========================================================================================================================================= // + // Prod.GAData/GAMeta functions // + // ========================================================================================================================================= // +BTValuesFromProduct ; Parameters: Product,lbNaam +BTValuesToProduct ; Parameters: Product +BWValuesToProduct ; Parameters: Product,lbNaam +CalcTotVermogen() ; Parameters: lbLampIDs +NutLengte() ; Parameters: MaxLengte, AftrekLi, AftrekRe + + // ========================================================================================================================================= // + // %this functions // + // ========================================================================================================================================= // +InitPos ; Parameters: MaxLengte, blnClear(=1) +ResizeTL ; Parameters: MaxLengte +SetNewPos ; Parameters: pID, objType="TL", objID, Value, PosNode(="B") +SetValueAt ; Parameters: pID, Value, PosNode(="B") +RecalcPos ; Parameters: pID, blnNear +RecalcPosPrevVR ; Parameters: pID +AppendPos() ; Parameters: objType, objID, Value, PosNode(="B") +InsertPos ; Parameters: pID, [objType, objID, Value, PosNode(="B")] +DeletePos ; Parameters: pID +ClearPos ; Parameters: pID +ShiftPosIDs ; Parameters: pIDFrom, ShiftRel +PosListFromArray() ; Parameters: PosNode(="B") +LampListFromArray() +FillTLPosFromLists ; Parameters: lbLampIDs,lbLampPos,PosNode(="B"),MaxLengte +PosBeginFromPrev() ; Parameters: pID, TussenLengte, [objType, objID] +PosPrevEindWaarde() ; Parameters: pID + + +CalcSnoerLengte ; Parameters: pID(="*") + Quit:($G(pID)="") + If (pID="*") Do cslLoopAllPos + Else If $G(..TLPos(pID,".TYPE"))="VR" Do cslCalcSinglePos + ;Else foutief pID + Quit +cslLoopAllPos + New tmpID + Set tmpID=0 + For Set tmpID=$O(..TLPos(tmpID)) Quit:(tmpID=$$$MaxTLPos)||(tmpID="") Do:(tmpID'="*") ..CalcSnoerLengte(tmpID) + Quit +cslCalcSinglePos +#define PrevPos $O(..TLPos(pID),-1) +#define NextPos $O(..TLPos(pID)) + New ExtraLen + Set ExtraLen=0 + Set ExtraLen=ExtraLen+$G(..TLPos(pID,"LEN")) ; LenVR + Set ExtraLen=ExtraLen+$$cslGetExtraLen($$$PrevPos,"E") + Set ExtraLen=ExtraLen+$$cslGetExtraLen($$$NextPos,"B") + Set ..TLPos(pID,"SNOER","MIN")=ExtraLen + ;Set ..TLPos(pID,"SNOER","ID")="SN1500" + ;Set ..TLPos(pID,"SNOER","LEN")=1500 + Quit +cslGetExtraLen(pID,PosNode) +#define LengteLiRe + Quit:(pID="") 0 + New EL,lbData + If $G(..TLPos(pID,".TYPE"))="TL" Do + . Set lbData=$G(..TLPos(pID,"DATA")) + . Set EL=$S(PosNode="B":$LG(lbData,3), PosNode="E":$LG(lbData,4), 1:"") + . ;If EL="" Set EL=$$cslGetExtraLenViaObject ; reserve methode + . Set EL=+EL + Else Do + . Set EL=0 + Quit EL + Quit 0 + /* +cslGetExtraLenViaObject() + ; Als EL leeg is, dan kan de waarde eventueel nog opgezocht worden via het openen van het TLMLAMP-object + New TLID,TLobj + Set TLID=$G(..TLPos(pID,"ID")) + If $L(TLID) Do + . Set TLobj=##class(Prod.GAMeta.BT.TLMLamp).%OpenId(TLID) + . Set:(TLobj) EL=$S(PosNode="B":TLobj.ExtraSnoerLi, PosNode="E":TLobj.ExtraSnoerRe, 1:"") + . Set TLobj="" + Quit $G(EL,0) + */ + +TLSchemaText() ; Parameters: lbOpties +#define COLS 35 + Quit:('$D(..TLPos)) + New arOpts,txt,pID,pType,lbData,tmpV,i,iOpt + Do tlsGetOptions + Set txt="" + Do tlsHeader + Set txt=txt_"==================================="_$$$CRLF + Set pID=0 + For Set pID=$O(..TLPos(pID)) Quit:(pID=$$$MaxTLPos)||(pID="") Do + . Set pType=..TLPos(pID,".TYPE") + . Quit:(pType="") + . Do @("tlsType"_pType) + Set txt=txt_"="_$$tlsEindPos_"====================="_$$$CRLF + ;Set txt=txt_""_$$$CRLF + Quit txt +tlsGetOptions + ; Default Settings + Set arOpts("HDR")=0 ; Display Header + Set arOpts("ENDP")=1 ; Display EndPos + Set arOpts("VR")=1 ; Display Tussenruimtes (VR) + ; Settings from Function-call + For i=1:1:$LL($G(lbOpties)) Do + . Set iOpt=$LG(lbOpties,i) + . Set:($L($P(iOpt,":",1))) arOpts($P(iOpt,":",1))=$P(iOpt,":",2) + Quit +tlsHeader + Set txt=txt_$$$CRLF + Quit:('$G(arOpts("HDR"))) + Set txt=txt_" Lamp begin:einde / center "_$$$CRLF + Quit:('$G(arOpts("VR"))) + Set txt=txt_" -------------------- "_$$$CRLF + Set txt=txt_" tussenruimte "_$$$CRLF + Quit +tlsTypeTL +#define TLDVermogen 1 +#define TLDLengte 2 + Set lbData=$G(..TLPos(pID,"DATA")) + Set txt=txt_" +--------------+ "_$$$CRLF + Set txt=txt_" "_$J($LG(lbData,$$$TLDVermogen)_" W ",11)_ " |"_$J($G(..TLPos(pID,"POS","B")),5,0)_" : | "_$$$CRLF + Set txt=txt_" "_$J("L="_$LG(lbData,$$$TLDLengte)_" mm",11)_" | : "_$J($G(..TLPos(pID,"POS","C")),5,0)_" | "_$$$CRLF + Set txt=txt_" "_ " |"_$J($G(..TLPos(pID,"POS","E")),5,0)_" : | "_$$$CRLF + Set txt=txt_" +--------------+ "_$$$CRLF + Quit +tlsTypeVR + Quit:('$G(arOpts("VR"))) + Set txt=txt_" "_$J(" "_$G(..TLPos(pID,"LEN")),9)_" "_$$$CRLF + Quit +tlsEindPos() +#define EndPos ..TLPos($$$MaxTLPos,"POS","B") + Quit:($G(arOpts("ENDP")))&&($G($$$EndPos)>0) $TR($J("#L:"_(+$J($$$EndPos,0,0))_"�mm#",12)," �#","= -")_"=" ; Result: "=== L:999 mm =" + Quit "=============" +tlsEindPos2 +#define EndPos ..TLPos($$$MaxTLPos,"POS","B") + Quit:('$G(arOpts("ENDP"))) + Set:($G($$$EndPos)>0) txt=txt_$J("Max="_(+$J($$$EndPos,0,0)),$$$COLS)_$$$CRLF + Quit + + +SwapPosIDs ; Parameters: pID1,pID2 + // Deze routine is gecompliceerder dan op het eerste zicht gedacht: + // de objecten moeten na het wisselen OOK van positie herschikt worden. Hier komt dus meer bij kijken dan + // enkel het wisselen van de Nodes! + // + // DAAROM: in eerste fase (werkt reeds!) moeten de IDs van opeenvolgende objecten zijn !!! + // +#define IDinRange(%v) ((%v>0)&&(%v<$$$MaxTLPos)) + Quit:($G(pID1)="")||($G(pID2)="") + Quit:('$$$IDinRange(pID1))||('$$$IDinRange(pID2)) ; Alleen tussen de "UIT"-einde mag gewisseld worden + Quit:($G(..TLPos(pID1,".TYPE"))="VR")||($G(..TLPos(pID2,".TYPE"))="VR") + + If pID1=(pID2+2) Do + . Set pID1=pID2 + . Set pID2=pID1+2 + Else If pID1=(pID2-2) Do + . ; OK + Else Quit + . ; Geen opeenvolgende IDs. AFBREKEN ! + + New tmpAr,DataP1,DataP2,B1,E2 + Set DataP1=$D(..TLPos(pID1)) + Set DataP2=$D(..TLPos(pID2)) + If DataP1 && DataP2 Do + . ; Verwissel TL-obj's + . Set B1=$G(..TLPos(pID1,"POS","B")) + . Set E2=$G(..TLPos(pID2,"POS","E")) + . Merge tmpAr=..TLPos(pID1) + . Kill ..TLPos(pID1) + . Merge ..TLPos(pID1)=..TLPos(pID2) + . Kill ..TLPos(pID2) + . Merge ..TLPos(pID2)=tmpAr + . Kill tmpAr + . ; Verwissel Vrije Ruimtes + . Merge tmpAr=..TLPos(pID1+1) + . Kill ..TLPos(pID1+1) + . Merge ..TLPos(pID1+1)=..TLPos(pID2+1) + . Kill ..TLPos(pID2+1) + . Merge ..TLPos(pID2+1)=tmpAr + . Kill tmpAr + . ; Nieuwe posities invullen ==> VR zullen ook berekend worden + . Do:(B1'="") ..SetValueAt(pID1,B1,"B") + . Do:(E2'="") ..SetValueAt(pID2,E2,"E") + Else If (DataP1=0)&&(DataP2=0) Do Quit + . ; Geen Data, niets te verwisselen + Else Do + . Do swpSwapWithEmpty + Quit +swpSwapWithEmpty + New EmptyID,DataID + If DataP1 Do + . Set DataID=pID1 + . Set EmptyID=pID2 + Else If DataP2 Do + . Set DataID=pID2 + . Set EmptyID=pID1 + Else Quit + ; Verwissel TL-obj + Merge ..TLPos(EmptyID)=..TLPos(DataID) + Kill ..TLPos(DataID) + ; Verwissel Vrije Ruimte + Merge ..TLPos(EmptyID+1)=..TLPos(DataID+1) + Kill ..TLPos(DataID+1) + Quit + + +TLCombiCalc ; Parameters: &arCombi, lbCalcType, NutLengte, TussenAfstand, lbParams + New j,blnBothCSand1S,lbAddPrm + Do:('$D(..SwizzleTLs)) ..SwizzleTL() + Kill arCombi + For j=1:1:$LL(lbCalcType) Do + . Set blnBothCSand1S=($LG(lbCalcType,j)="CS")&&($LF(lbCalcType,"1S")>0) + . Set lbAddPrm=$S(blnBothCSand1S:$LB("Excl.1S=1"), 1:"") + . Do TLCombiCalcByType(.arCombi,$LG(lbCalcType,j),.NutLengte,.TussenAfstand,$LG(lbParams,j)_lbAddPrm) + ; Standaard Omschrijving toevoegen + Do tccCalcOmsAll + Quit +tccCalcOmsAll + New i,TLID,Oms,blnToonLengte + Set i="" + For Set i=$O(arCombi(i)) Quit:(i="") Do + . Do tccCalcOms(i) + Quit +tccCalcOms(i) +#define NextElem(%v) $O(arCombi(i,"TLID",%v)) + Set blnToonLengte=($$$NextElem($$$NextElem(""))="") ; bevat slechts ��n TLID + Set (TLID,Oms)="" + For Set TLID=$O(arCombi(i,"TLID",TLID),-1) Quit:(TLID="") Do + . Set Oms=Oms_" + "_""_arCombi(i,"TLID",TLID)_"x"_$J(..SwizzleTLs(TLID).Vermogen,2)_"W"_$S(blnToonLengte: " | "_$J(..SwizzleTLs(TLID).Lengte,4)_" mm", 1:"") + Set:($E(Oms,1,3)=" + ") $E(Oms,1,3)="" + Set arCombi(i,"Oms")=Oms + Quit +TLCombiCalcByType(arCombi,CalcType,MaxLengte,TussenAfstand,lbParams) ; Parameters: &arCombi, CalcType, NutLengte, TussenAfstand, lbParams +#define GetLastI ($O(arCombi(""),-1)) + Quit:(CalcType="") + Quit:(CalcType'?1(1"1S",1"CS")) + Quit:($G(MaxLengte)'>0) + New arPrm,LL,TL,Cnt,LLtot,NL,TLID,TLobj ; ,SWL,TSL + Do tccAnalyseParams + Set TL=$G(TussenAfstand,0) + Do @("tccCalcType"_CalcType) ; Specifieke routine oproepen + Quit +tccAnalyseParams + Quit:($G(lbParams)="") + New j,Val + For j=1:1:$LL(lbParams) Do + . Set Val=$LG(lbParams,j) + . Set:(Val["=") arPrm($P(Val,"=",1))=$P(Val,"=",2) + Quit + // ------------------------------------------------------- + // Algoritme voor Combinaties: Lampen van ��n bepaald type + // ------------------------------------------------------- +tccCalcType1S + New BeperkCnt,i + Set i=$$$GetLastI + Set BeperkCnt=$G(arPrm("MaxCnt"),0) + Set TLID="" + For Set TLID=$O(..SwizzleTLs(TLID)) Quit:(TLID="") Do + . Set TLobj=..SwizzleTLs(TLID) + . Quit:('TLobj) + . Set LL=TLobj.Lengte + . Set Cnt=$$tcc1SMaxCntInLengte + . Quit:(Cnt'>0) + . Set:(BeperkCnt>0)&&(Cnt>BeperkCnt) Cnt=BeperkCnt ; Max Aantal is beperkt + . Set i=i+1 + . Set arCombi(i,"Key")="1S\"_Cnt_":"_TLID + . Set arCombi(i,"TLID",TLID)=Cnt + . Set arCombi(i,"Extra","LLtot")=LL*Cnt + . Set NL=$$tcc1SNodigeLengte + . Set arCombi(i,"Extra","NL")=NL + . Set arCombi(i,"Extra","Lrest")=MaxLengte-NL + Quit +tcc1SMaxCntInLengte() + Quit:(LL'>0) 0 + Quit (MaxLengte+TL)\(LL+TL) + ;Quit:($G(SWZijkant)) (MaxLengte-(SWL+(1*TSL))+(1*TL))\(LL+TL) + ;Quit:($G(SWMidden) ) (MaxLengte-(SWL+(2*TSL))+(2*TL))\(LL+TL) + Quit 0 +tcc1SNodigeLengte() + Quit ((LL+TL)*Cnt)-TL + ;Quit:($G(SWZijkant)) ((LL+TL)*Cnt)-(1*TL)+(1*TSL)+SWL ; (MaxLengte-(SWL+(1*TSL))+(1*TL))\(LL+TL) + ;Quit:($G(SWMidden) ) ((LL+TL)*Cnt)-(2*TL)+(2*TSL)+SWL ; (MaxLengte-(SWL+(2*TSL))+(2*TL))\(LL+TL) + Quit 0 + + // ---------------------------------------------------------- + // Algoritme voor Combinaties: Lampen van verschillende types + // ---------------------------------------------------------- +tccCalcTypeCS + ; Do TLCombiCalcPV(MaxLengte,TussenAfstand,MaxSoorten,MaxLamp,arResult) + New arLampLU,arResult,MaxSoorten,MaxLamp,i,j,Cnt,LLtot,sKey,CntSoort + Kill arResult + Set TLID="" + For Set TLID=$O(..SwizzleTLs(TLID)) Quit:(TLID="") Do + . Set TLobj=..SwizzleTLs(TLID) + . Quit:('TLobj) + . Set arLampLU(TLID)=TLobj.Lengte + Set MaxSoorten=$G(arPrm("MaxS"),99) + Set MaxLamp=$G(arPrm("MaxCnt"),99) + Set blnExclude1S=''$G(arPrm("Excl.1S")) + Do TLCombiCalcRecurs(MaxLengte,TL,MaxSoorten,MaxLamp,.arLampLU,.arResult) ; TL=$G(TussenAfstand,0) + ; Parse Result into arCombi + Set i=$$$GetLastI + Set j="" + For Set j=$O(arResult("L",j)) Quit:(j="") Do + . Set CntSoort=$G(arResult("L",j,"#S")) + . Quit:(blnExclude1S)&&(CntSoort<2) + . Set i=i+1 + . Merge arCombi(i,"TLID")=arResult("L",j,"TLID") + . Set LLtot=0 + . Set sKey="" + . Set TLID="" + . For Set TLID=$O(arCombi(i,"TLID",TLID)) Quit:(TLID="") Do + .. Set Cnt=$G(arCombi(i,"TLID",TLID)) + .. Quit:(Cnt'>0) + .. Set sKey=sKey_"+"_Cnt_":"_TLID + .. Set LLtot=LLtot+(arLampLU(TLID)*Cnt) + . Set:($E(sKey,1)="+") $E(sKey,1)="" + . Set arCombi(i,"Key")=$S(CntSoort=1:"1S", 1:"CS")_"\"_sKey + . Set arCombi(i,"Extra","LLtot")=LLtot + . Set arCombi(i,"Extra","#S")=CntSoort + . Set NL=$$tccCSNodigeLengte + . Set arCombi(i,"Extra","NL")=NL + . Set arCombi(i,"Extra","Lrest")=MaxLengte-NL + . ;Set arCombi(i,"Extra","LrestPV")=$G(arResult("L",j,"REST")) + ;d WL^vhDBG($$$ArrayTT("arCombi")) + Quit +tccCSNodigeLengte() + Quit LLtot+(TL*($G(arResult("L",j,"#L"))-1)) + + +TLCombiSort ; Parameters: &arCombi, &arSort + New i,tmpAr,BWType,L,OmsStd,OmsTmp + Do:('$D(..SwizzleTLs)) ..SwizzleTL() + Set i="" + For Set i=$O(arCombi(i)) Quit:(i="") Do + . Set BWType=$P($G(arCombi(i,"Key")),"\",1) + . Set:(BWType="") BWType="?" + . Set:(BWType="CS") BWType=BWType_"\"_$G(arCombi(i,"Extra","#S")) + . Set tmpAr("C#1",BWType)=$G(tmpAr("C#1",BWType))+1 + . If $G(arCombi(i,"Extra","Lrest"))="" Do + .. Set tmpAr("C#1",BWType,"F",i)=i ; Fixed: vaste volgorde + . Else Do + .. Set tmpAr("C#1",BWType,"C#2",arCombi(i,"Extra","Lrest"),"F",i)=i + . Do tcsCalcOms(i) + Merge tmpAr("~Spec")=tmpAr("Spec") + Kill tmpAr("Spec") + Kill arSort + Set (BWType,i,L)="" + ; Sortering op 3 niveaus: BWtype, Lrest, i (derde niveau in geval dat meerdere lengtes "Lrest" gelijk zijn) + For Set BWType=$O(tmpAr("C#1",BWType)) Quit:(BWType="") Do + . Do tcsAddToSortArray("catg:"_$P(BWType,"\",1)) + . ; Sorteren van nodes via Criteria + . For Set L=$O(tmpAr("C#1",BWType,"C#2",L)) Quit:(L="") Do + .. For Set i=$O(tmpAr("C#1",BWType,"C#2",L,"F",i)) Quit:(i="") Do + ... Do tcsAddToSortArray(tmpAr("C#1",BWType,"C#2",L,"F",i)) + . ; Sorteren van de overige nodes (criteria kunnen niet toegepast worden) + . For Set i=$O(tmpAr("C#1",BWType,"F",i)) Quit:(i="") Do + .. Do tcsAddToSortArray(tmpAr("C#1",BWType,"F",i)) + Quit +tcsCalcOms(i) + Quit:($G(arCombi(i,"Extra","Lrest"))="") + Set OmsTmp=$J("["_$J(arCombi(i,"Extra","Lrest"),0,0)_"]",23) + Set OmsStd=$G(arCombi(i,"Oms")) + Set $E(OmsTmp,1,16)=OmsStd_$J("",16-$L(OmsStd)) + Set arCombi(i,"Oms","S")=OmsTmp + Quit +tcsAddToSortArray(Value) + Set arSort=$G(arSort)+1 + Set arSort(arSort)=Value + Quit arSort + + +TLCombiVerdeel ; Parameters: &arCombi, TussenAfstand, AftrekLi, AftrekRe, Align(="L"), lbTLWs + ; arCombi bevat meestal slechts 1 hoofdnode, maar kan in principe ook meerdere bevatten. Daarom $ORDER() + Quit:('$D(arCombi)) + New NutLengte,TL,BeginPos,CurPos,tmpCenter,i,j,TLID,Cnt,CntIDs,lbIDs,lbPos,lbTLs,SomW,TotTLW + Do:('$D(..SwizzleTLs)) ..SwizzleTL() + Set NutLengte=..NutLengte(,AftrekLi,AftrekRe) + Quit:(NutLengte'>0) + Set TL=$G(TussenAfstand,0) + Set:(TL'>0) TL=0 + Set i="" + For Set i=$O(arCombi(i)) Quit:(i="") Do + . Do tcvVerdeel + Quit +tcvVerdeel +#define NodigeLengte arCombi(i,"Extra","NL") +#define TotLampLengte arCombi(i,"Extra","LLtot") + Quit:($P($G(arCombi(i,"Key")),"\",1)'?1(1"1S",1"CS")) + Kill lbTLs + Set lbIDs=$$tcvBuildIDsList + Set CntIDs=$LL(lbIDs) + If Align="R" Do + . Set BeginPos=AftrekLi+$$tcvMax(0, NutLengte-$$$NodigeLengte) + Else If Align="C" Do + . If (AftrekRe'=AftrekLi) && $G(blnCenterToProf,1) Do + .. ; om te Centeren t.o.v. ProfLengte: kleine correctie toevoegen als AftrekRe <> AftrekLi. + .. Set AftrekCorr=(AftrekRe-AftrekLi) + .. Set tmpCenter=(NutLengte-$ZABS(AftrekCorr)-$$$NodigeLengte)/2 + .. If AftrekCorr>0 Set BeginPos=AftrekLi+AftrekCorr+$S((tmpCenter<0):2*tmpCenter, 1:$$tcvMax(0, tmpCenter)) + .. Else Set BeginPos=AftrekLi+$$tcvMax(0, tmpCenter) + . Else Do + .. Set BeginPos=AftrekLi+$$tcvMax(0, (NutLengte-$$$NodigeLengte)/2) + Else Do + . Set BeginPos=AftrekLi + If Align="J" Do + . Set lbTLs=$$tcvBuildTLWeightList($G(lbTLWs)) + Set lbPos=$$tcvBuildPosList + Set arCombi(i,"List","IDs")=lbIDs + Set arCombi(i,"List","Pos")=lbPos + Quit +tcvMax(v1,v2) + Quit $S(v1>v2:v1, 1:v2) +tcvBuildIDsList() + Set lbIDs="" + Set TLID="" + For Set TLID=$O(arCombi(i,"TLID",TLID)) Quit:(TLID="") Do + . For Cnt=1:1:arCombi(i,"TLID",TLID) Set lbIDs=lbIDs_$LB(TLID) + Quit lbIDs +tcvBuildPosList() + ; Als lbTLs niet bestaat, wordt gewoon TL als waarde genomen + Set:($G(lbTLs)="")||($LL(lbTLs)=0) lbTLs="" + Set lbPos="" + Set CurPos=BeginPos+$LG(lbTLs,1,0) + For Cnt=1:1:CntIDs Do:($LG(lbIDs)'="") + . Set TLID=$LI(lbIDs,Cnt) + . Set lbPos=lbPos_$LB($J(CurPos,0,0)) + . Set CurPos=CurPos+..SwizzleTLs(TLID).Lengte+$$tcvMax(TL,$LG(lbTLs,Cnt+1,TL)) + Quit lbPos +tcvBuildTLWeightList(lbTLWs) + ; ListBuild gewichten (lbTLWs) + ;d WL^vhDBG($$$LCVT(lbTLWs)) + If CntIDs=0 Do ; Geen lampen + . Set lbTLWs="" + Else If CntIDs=1 Do ; E�n lamp + . If $LL(lbTLWs)=0 Set lbTLWs=$LB(0,0) + . Else Set lbTLWs=$LB($LI(lbTLWs,1),$LI(lbTLWs,-1)) + Else If CntIDs+1=$LL(lbTLWs) Do + . ; lbTLWs bevat exact het aantal elementen voor TussenLengte (incl. links en rechts) + Else Do ; Meerdere lampen + . If $LL(lbTLWs)=0 Set lbTLWs=$LB(0,1,0) + . Else If $LL(lbTLWs)=1 Set lbTLWs=lbTLWs_lbTLWs_lbTLWs + . Else Set lbTLWs=$LB($LI(lbTLWs,1),$LI(lbTLWs,2),$LI(lbTLWs,-1)) + . If CntIDs>2 Do + .. New tmpLB + .. Set tmpLB="" + .. For j=2:1:CntIDs Set tmpLB=tmpLB_$LB($LI(lbTLWs,2)) + .. Set $LI(lbTLWs,2,2)=tmpLB + ;Set TL=$S(CntIDs>1:$$tcvMax(TL, (NutLengte-$$$TotLampLengte)/(CntIDs-1)), 1:0) ; Tussenafstanden : gelijke delen + ; Met de gewichten (lbTLWs) de ListBuild TussenLengtes (lbTLs) berekenen + Set SomW=0 + For j=1:1:$LL(lbTLWs) Set SomW=SomW+$LI(lbTLWs,j) + Set:(SomW=0) SomW=1 + Set TotTLW=(NutLengte-$$$TotLampLengte)/SomW ; Totale vrije lengte / som van de gewichten + Set lbTLs="" + For j=1:1:$LL(lbTLWs) Set lbTLs=lbTLs_$LB((TotTLW*$LI(lbTLWs,j))) + ;d WL^vhDBG("cvt: "_$$$LCVT(lbTLWs)_" TL:"_$$$LCVT(lbTLs)) + Quit lbTLs + + + /* +tmpAr(0,".TYPE")=UIT +tmpAr(0,"POS","E")=0 +tmpAr(1,".TYPE")=VR +tmpAr(1,"LEN")=30 +tmpAr(2,".TYPE")=TL ; Lamp begin:einde / center +tmpAr(2,"CHK2")=2 ; -------------------- +tmpAr(2,"ID")=1013 ; tussenruimte +tmpAr(2,"LEN")=550 ; =================================== +tmpAr(2,"POS","B")=30 ; 30 +tmpAr(2,"POS","C")=305 ; +--------------+ +tmpAr(2,"POS","E")=580 ; 13 W | 30 : | +tmpAr(3,".TYPE")=VR ; L=550 mm | : 305 | +tmpAr(3,"LEN")=40 ; | 580 : | +tmpAr(4,".TYPE")=TL ; +--------------+ +tmpAr(4,"ID")=1035 ; 40 +tmpAr(4,"LEN")=1480 ; +--------------+ +tmpAr(4,"POS","B")=620 ; 35 W | 620 : | +tmpAr(4,"POS","C")=1360 ; L=1480 mm | : 1360 | +tmpAr(4,"POS","E")=2100 ; | 2100 : | +tmpAr(5,".TYPE")=VR ; +--------------+ +tmpAr(5,"LEN")=30 ; 30 +tmpAr(6,".TYPE")=TL ; +--------------+ +tmpAr(6,"CHK1")=1 ; 8 W | 2130 : | +tmpAr(6,"ID")=1008 ; L=320 mm | : 2290 | +tmpAr(6,"LEN")=320 ; | 2450 : | +tmpAr(6,"POS","B")=2130 ; +--------------+ +tmpAr(6,"POS","C")=2290 ; 350 +tmpAr(6,"POS","E")=2450 ; ==-L:2800 mm-====================== +tmpAr(7,".TYPE")=VR +tmpAr(7,"LEN")=350 +tmpAr(100,".TYPE")=UIT +tmpAr(100,"POS","B")=2800 + */ + + + ; Do TLCombiCalcPV^BL.PR.GA.TLM.tmpDev(500,5,3,3,.arTest) zw arTest +TLCombiCalcPV(MaxLengte,TussenAfstand,MaxSoorten,MaxLamp,arResult) + Kill arResult + ; Zelf opbouwen voor test + Set Lampen(1008)=320 + Set Lampen(1013)=550 + Set Lampen(1014)=580 + Set Lampen(1021)=880 + Set Lampen(1028)=1180 + Set Lampen(1035)=1480 + Set MaxSoorten=$G(MaxSoorten,99) + Set MaxLamp=$G(MaxLamp,99) + Do TLCombiCalcRecurs(MaxLengte,TussenAfstand,MaxSoorten,MaxLamp,.Lampen,.arResult) + Quit + + ; Lampen, arResult en arOR via .Local doorgeven +TLCombiCalcRecurs(MaxLengte,TussenAfstand,MaxSoorten,MaxLamp,Lampen,arResult,arOR) + New TLID,AantalLamp,arTR,LL,MaxLampCalc,AantalLampCalc + If ($G(arOR("#L"))'(MaxLamp-$G(arOR("#L"))):MaxLamp-$G(arOR("#L")),1:AantalLampCalc) + . For AantalLamp=1:1:MaxLampCalc Do + .. Kill arTR + .. Merge arTR=arOR ; kopieren voor volgende recursie + .. Set arTR("TLID",TLID)=AantalLamp + .. Set arTR("REST")=$G(arTR("REST"),MaxLengte)-((LL+TussenAfstand)*AantalLamp)+$S($G(arTR("#L")):0,1:TussenAfstand) ; Bij de eerste lamp de tussenafstand er 1 keer bijtellen + .. Set arTR("#L")=$G(arTR("#L"))+AantalLamp + .. Set arTR("#S")=$G(arTR("#S"))+1 + .. If MaxLampCalc=AantalLamp Do ; Opslag + ... Merge arResult("L",$I(arResult))=arTR + ... Set arResult("R",arTR("REST"),arTR("#S"),arTR("#L"),arResult)="" ; Sortering op rest minima + ... Set arResult("S",arTR("#S"),arTR("REST"),arTR("#L"),arResult)="" ; Sortering op #Soorten + ... Set arResult("M",$S(arTR("#S")=1:1,1:2),arTR("REST"),arTR("#S"),arTR("#L"),arResult)="" ; Sortering op 1 en meerdere + .. ; Recursie + .. Do TLCombiCalcRecurs(MaxLengte,TussenAfstand,MaxSoorten,MaxLamp,.Lampen,.arResult,.arTR) + + \ No newline at end of file Index: BL/EC/EDI/tmpDev.mac.rou =================================================================== diff -u --- BL/EC/EDI/tmpDev.mac.rou (revision 0) +++ BL/EC/EDI/tmpDev.mac.rou (revision 1152) @@ -0,0 +1,131 @@ + + + /* +w ##class(BL.EC.EDI).CalcOfferteMatrix(142,,"c:\Temp\TBox NEVES calcMatrix.txt") +w ##class(BL.EC.EDI).CalcOfferteMatrix(1331,,"c:\Temp\TBox Uytterhoeven calcMatrix.txt") + */ + + ; SUBROUTINE VAN classmethod CalcOfferteMatrix() + ; Definitie van de parameters/dimensies voor de calculatiemathix +comSetMatrixDfl(arMatrix) ; arMatrix als .local doorgeven + /* * / + // KLANT 1387 - UYTTERHOEVEN (Deel 1 : 50kg) + Set arMatrix("IN","InitVal","ItemDK")=50 + Set arMatrix("IN","Dim")=$LB("ItemLT","ItemLD","ItemCB") ; !!! VOLGORDE is BELANGRIJK voor de matrix !!! + ; LadeType + Set arMatrix("IN","Prm","ItemLT","Val")=$LB("M","D","M/Z","D/Z") + Set arMatrix("IN","Prm","ItemLT","Xtra","D","ItemBX")="BD" + Set arMatrix("IN","Prm","ItemLT","Xtra","D/Z","ItemBX")="BD" + Set arMatrix("IN","Prm","ItemLT","Xtra","D/Z","ItemBGRP")="H" + Set arMatrix("IN","Prm","ItemLT","Xtra","M/Z","ItemBGRP")="X" + ; LadeDiepte + Set arMatrix("IN","Prm","ItemLD","Val")=$LB(450,500,550,600,650) + ; CorpusBreedte + Set arMatrix("IN","Prm","ItemCB","Val")=$LB(400,600,800,1000,1200) + Quit + /* * / + + // KLANT 1387 - UYTTERHOEVEN (Deel 2 : 30kg) + Set arMatrix("IN","InitVal","ItemDK")=30 + Set arMatrix("IN","Dim")=$LB("ItemLT","ItemLD","ItemCB") ; !!! VOLGORDE is BELANGRIJK voor de matrix !!! + ; LadeType + Set arMatrix("IN","Prm","ItemLT","Val")=$LB("M","D","M/Z","D/Z") + Set arMatrix("IN","Prm","ItemLT","Xtra","D","ItemBX")="BD" + Set arMatrix("IN","Prm","ItemLT","Xtra","D/Z","ItemBX")="BD" + Set arMatrix("IN","Prm","ItemLT","Xtra","D/Z","ItemBGRP")="H" + Set arMatrix("IN","Prm","ItemLT","Xtra","M/Z","ItemBGRP")="X" + ; LadeDiepte + Set arMatrix("IN","Prm","ItemLD","Val")=$LB(270,350,400,450,500,550) + ; CorpusBreedte + Set arMatrix("IN","Prm","ItemCB","Val")=$LB(400,600,800,1000) + Quit + /* */ + // KLANT 1387 - UYTTERHOEVEN (Deel 2b : 30kg ; D-laden DubReling) + Set arMatrix("IN","InitVal","ItemDK")=30 + Set arMatrix("IN","Dim")=$LB("ItemLT","ItemLD","ItemCB") ; !!! VOLGORDE is BELANGRIJK voor de matrix !!! + ; LadeType + Set arMatrix("IN","Prm","ItemLT","Val")=$LB("D","D/Z") + Set arMatrix("IN","Prm","ItemLT","Xtra","D","ItemBX")="ER" + Set arMatrix("IN","Prm","ItemLT","Xtra","D/Z","ItemBX")="ER" + Set arMatrix("IN","Prm","ItemLT","Xtra","D/Z","ItemBGRP")="H" + ; LadeDiepte + Set arMatrix("IN","Prm","ItemLD","Val")=$LB(270,350,400) + ; CorpusBreedte + Set arMatrix("IN","Prm","ItemCB","Val")=$LB(400,600,800,1000) + Quit + /* * / + // KLANT 1387 - UYTTERHOEVEN (Deel 3 : 80kg) + Set arMatrix("IN","InitVal","ItemDK")=80 + Set arMatrix("IN","InitVal","ItemBM")="LR" + Set arMatrix("IN","InitVal","ItemBX")="BD" + Set arMatrix("IN","Dim")=$LB("ItemLT","ItemLD","ItemCB") ; !!! VOLGORDE is BELANGRIJK voor de matrix !!! + ; LadeType + Set arMatrix("IN","Prm","ItemLT","Val")=$LB("D") + ;Set arMatrix("IN","Prm","ItemLT","Xtra","D","ItemBX")="BD" + ; LadeDiepte + Set arMatrix("IN","Prm","ItemLD","Val")=$LB(500,550,600,650) + ; CorpusBreedte + Set arMatrix("IN","Prm","ItemCB","Val")=$LB(800,1000,1200) + Quit + + /* * / + // KLANT 4485 - NEVES + Set arMatrix("IN","Dim")=$LB("ItemLT","ItemLD","ItemCB") ; !!! VOLGORDE is BELANGRIJK voor de matrix !!! + ; LadeType + Set arMatrix("IN","Prm","ItemLT","Val")=$LB("M") ; $LB("M","D") ; $LB("M","D") + Set arMatrix("IN","Prm","ItemLT","Xtra","D","ItemBX")="ER" + ; LadeDiepte + Set arMatrix("IN","Prm","ItemLD","Val")=$LB(450,500,600) ; $LB(270,350,400,450,500,600) + Set arMatrix("IN","Prm","ItemLD","Xtra",600,"ItemDK")=50 + ; CorpusBreedte + Set arMatrix("IN","Prm","ItemCB","Val")=$LB(250,300,900) ; $LB(250,300,350,400,450,500,550,600,650,700,750,800,850,900) + Quit + /* */ + + Quit + + + + + + /* +<<$LB("~Flow.Offerte.LijnProduct~Flow.Offerte.LijnProductGA~","","01.001.00.00","","")>> + +"KM","KLNummer")=1387 "KLNummer")=1387 "KLNummer")=1387 "KLNummer")=1387 +"KM","ItemASM")= "ItemASM")= "ItemASM")= "ItemASM")= +"KM","ItemBM")=I "ItemBM")=I "ItemBM")=I "ItemBM")=LR +"KM","ItemDS")=IS "ItemDS")=IS "ItemDS")=IS "ItemDS")=IS +"KM","ItemKB")=DG "ItemKB")=DG "ItemKB")=DG "ItemKB")=DG +"KM","ItemKL")=IN "ItemKL")=IN "ItemKL")=IN "ItemKL")=IN +"KM","ItemKX")=IN "ItemKX")=IN "ItemKX")=IN "ItemKX")=IN +"KM","ItemOLP")= "ItemOLP")= "ItemOLP")= "ItemOLP")= +"KM","ItemOPVL")= "ItemOPVL")= "ItemOPVL")= "ItemOPVL")= +"KM","ItemRK")=CR "ItemRK")=CR "ItemRK")=CR "ItemRK")=CR +"KM","ItemSB")=0 "ItemSB")=0 "ItemSB")=0 "ItemSB")=0 +"KM","ItemSPZK")= "ItemSPZK")= "ItemSPZK")= "ItemSPZK")= +"KM","ItemVPK")=S "ItemVPK")=S "ItemVPK")=S "ItemVPK")=S +"KM","ItemWD")=18 "ItemWD")=18 "ItemWD")=18 "ItemWD")=18 + +"KM","ItemBGRP")=X "ItemBGRP")=H "ItemBGRP")=X "ItemBGRP")=X +"KM","ItemBX")=ZR "ItemBX")=BD "ItemBX")=BD "ItemBX")=BD +"KM","ItemCB")=400 "ItemCB")=800 "ItemCB")=1200 "ItemCB")=1000 +"KM","ItemDK")=30 "ItemDK")=30 "ItemDK")=50 "ItemDK")=80 +"KM","ItemFB")=S "ItemFB")=S "ItemFB")=S "ItemFB")=S +"KM","ItemLD")=400 "ItemLD")=550 "ItemLD")=500 "ItemLD")=650 +"KM","ItemLT")=M "ItemLT")=D/Z "ItemLT")=D "ItemLT")=D + + + +"KM","ItemDK")=30 "ItemDK")=30 "ItemDK")=50 "ItemDK")=80 + +"KM","ItemLT")=M "ItemLT")=D/Z "ItemLT")=D "ItemLT")=D +"KM","ItemLD")=400 "ItemLD")=550 "ItemLD")=500 "ItemLD")=650 +"KM","ItemCB")=400 "ItemCB")=800 "ItemCB")=1200 "ItemCB")=1000 +"KM","ItemBGRP")=X "ItemBGRP")=H "ItemBGRP")=X "ItemBGRP")=X +"KM","ItemBX")=ZR "ItemBX")=BD "ItemBX")=BD "ItemBX")=BD +"KM","ItemFB")=S "ItemFB")=S "ItemFB")=S "ItemFB")=S + + +w ##class(BL.EC.EDI).CalcOfferteMatrix(1331,,"TBox Uytterhoeven calcMatrix.txt") + + */ \ No newline at end of file Index: csp/PRGAProduct/tmpDev.mac.rou =================================================================== diff -u -r1151 -r1152 --- csp/PRGAProduct/tmpDev.mac.rou (.../tmpDev.mac.rou) (revision 1151) +++ csp/PRGAProduct/tmpDev.mac.rou (.../tmpDev.mac.rou) (revision 1152) @@ -1,4 +1,5 @@ #include %VHMacro + OnPage s ClientIP="192.168.1.97" ;d CLS^vhDBG Index: Prod/GADef/KaderDeur/TemplateDB.mac.rou =================================================================== diff -u --- Prod/GADef/KaderDeur/TemplateDB.mac.rou (revision 0) +++ Prod/GADef/KaderDeur/TemplateDB.mac.rou (revision 1152) @@ -0,0 +1,1165 @@ + ; AUTHOR : Wim VERMEULEN + ; LOCATION : VAN HOECKE N.V. + ; LAST MODIFIED : 08/08/2005 + ; + ; Data(base) to fill the TemplateKader Objects (KadObj). + ; Each KadObj corresponds to a Res.PI.TemplateKader object. + ; The routines below are called from the KDTEMPLATES.MAC routine, where KadObj-object and its PIItem are created. + ; + ; NOTE: Labels have the following structure: + ; ---- + ; "T" + KlantID + "xx" + PITemplateKader.ItemID + ; + + + ; Klant: TULP KEUKENGROEP nr. 2523 (KLNr gewijzigd op 08/08/2005 door WimV) + ; ============================================================================================= +T2523xxB1L1(KadObj) ; B1L1 ; bovenkastdeur links, greep onder + ;Do FillKDPropts(.KadObj,$G(Toepas),$G(OphangP),,,,,,"KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + ;Do FillKDBoring(.KadObj,XAndCode,YAndCode,Diam,BoringType,BoorDiepte,GlasDiam,ZPos,CodeBKey) + Quit + +T2523xxB1R1(KadObj) ; B1R1 ; bovenkastdeur rechts, greep onder + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+192),-40,5,"ON",-1) + Quit + +T2523xxB1L1SLASH1(KadObj) ; B1L1/1 ; bovenkastdeur links, greep onder, tot 300mm + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+160),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB1R1SLASH1(KadObj) ; B1R1/1 ; bovenkastdeur rechts, greep onder, tot 300mm + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+160),-40,5,"ON",-1) + Quit + +T2523xxb12xMINB11010L(KadObj) ; b12x-B11010L ; kastdeur links, greep onder + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-80",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+80",-40,5,"ON",-1) + Quit + +T2523xxb12xMINB11010R(KadObj) ; b12x-B11010R ; kastdeur rechts, greep onder + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-80",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+80",-40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB1L5(KadObj) ; B1L5 ; onderkastdeur links, greep boven + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit + +T2523xxB1R5(KadObj) ; B1R5 ; onderkastdeur rechts, greep boven + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+192),40,5,"ON",-1) + Quit + +T2523xxB1L5SLASH1(KadObj) ; B1L5/1 ; onderkastdeur links, greep boven, tot 300mm + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+160),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit + +T2523xxB1R5SLASH1(KadObj) ; B1R5/1 ; onderkastdeur rechts, greep boven, tot 300mm + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+160),40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB2L1(KadObj) ; B2L1 ; kastdeur links draaiend + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+272)_";5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB2R1(KadObj) ; B2R1 ; kastdeur rechts draaiend + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+272)_";5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+192),-40,5,"ON",-1) + Quit + +T2523xxB2L1SLASH1(KadObj) ; B2L1/1 ; kastdeur links draaiend, tot 300mm + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+272)_";5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+160),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB2R1SLASH1(KadObj) ; B2R1/1 ; kastdeur rechts draaiend, tot 300mm + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+272)_";5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+160),-40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB3L1(KadObj) ; B3L1 ; kastdeur links draaiend + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+416)_";5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB3R1(KadObj) ; B3R1 ; kastdeur rechts draaiend + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+416)_";5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+192),-40,5,"ON",-1) + Quit + +T2523xxB3L1SLASH1(KadObj) ; B3L1/1 ; kastdeur links draaiend, tot 300mm + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+416)_";5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+160),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB3R1SLASH1(KadObj) ; B3R1/1 ; kastdeur rechts draaiend, tot 300mm + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+416)_";5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+160),-40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB4L1(KadObj) ; B4L1 ; kastdeur links draaiend + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+560)_";5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB4R1(KadObj) ; B4R1 ; kastdeur rechts draaiend + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+560)_";5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+192),-40,5,"ON",-1) + Quit + +T2523xxB4L1SLASH1(KadObj) ; B4L1/1 ; kastdeur links draaiend, tot 300mm + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+560)_";5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+160),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB4R1SLASH1(KadObj) ; B4R1/1 ; kastdeur rechts draaiend, tot 300mm + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+560)_";5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+160),-40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB4R3(KadObj) ; B4R3 ; kastdeur rechts draaiend + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-"_(86+560)_";5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,40,"c-96",5,"ON",-1) + Do FillKDBoring(.KadObj,40,"c+96",5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB8L5(KadObj) ; B8L5 ; front deur links, greep boven, scharnier omlaag + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","214;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit + +T2523xxB8R5(KadObj) ; B8R5 ; front deur rechts, greep boven, scharnier omlaag + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","214;5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+192),40,5,"ON",-1) + Quit + +T2523xxB8L5SLASH1(KadObj) ; B8L5/1 ; front deur links, greep boven, scharnier omlaag, tot 300mm + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","214;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+160),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit + +T2523xxB8R5SLASH1(KadObj) ; B8R5/1 ; front deur rechts, greep boven, scharnier omlaag, tot 300mm + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","214;5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj,(67+160),40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxS1L1(KadObj) ; S1L1 ; linkerdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-50,"5+7","ON",-1) + Quit + +T2523xxS1L3(KadObj) ; S1L3 ; linkerdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,"c","5+7","ON",-1) + Quit + +T2523xxS1L5(KadObj) ; S1L5 ; linkerdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,50,"5+7","ON",-1) + Quit + +T2523xxS1L0(KadObj) ; S1L0 ; linkerdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Quit + +T2523xxS1R1(KadObj) ; S1R1 ; rechterdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-50,"5+7","ON",-1) + Quit + +T2523xxS1R3(KadObj) ; S1R3 ; rechterdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,"c","5+7","ON",-1) + Quit + +T2523xxS1R5(KadObj) ; S1R5 ; rechterdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,50,"5+7","ON",-1) + Quit + +T2523xxS1R0(KadObj) ; S1R0 ; rechterdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Quit + ;===================================================================================================================== + +T2523xxS2L1(KadObj) ; S2L1 ; linkerdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-50,"5+7","ON",-1) + Quit + +T2523xxS2L3(KadObj) ; S2L3 ; linkerdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,"c","5+7","ON",-1) + Quit + +T2523xxS2L5(KadObj) ; S2L5 ; linkerdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,50,"5+7","ON",-1) + Quit + +T2523xxS2L0(KadObj) ; S2L0 ; linkerdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Quit + +T2523xxS2R1(KadObj) ; S2R1 ; rechterdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-50,"5+7","ON",-1) + Quit + +T2523xxS2R3(KadObj) ; S2R3 ; rechterdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,"c","5+7","ON",-1) + Quit + +T2523xxS2R5(KadObj) ; S2R5 ; rechterdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,50,"5+7","ON",-1) + Quit + +T2523xxS2R0(KadObj) ; S2R0 ; rechterdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+288)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Quit + ;===================================================================================================================== + +T2523xxS3L1(KadObj) ; S3L1 ; linkerdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+432)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-50,"5+7","ON",-1) + Quit + +T2523xxS3L0(KadObj) ; S3L0 ; linkerdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+432)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Quit + +T2523xxS3R1(KadObj) ; S3R1 ; rechterdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+432)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-50,"5+7","ON",-1) + Quit + +T2523xxS3R0(KadObj) ; S3R0 ; rechterdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+432)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Quit + ;===================================================================================================================== + +T2523xxS4L1(KadObj) ; S4L1 ; linkerdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+576)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-50,"5+7","ON",-1) + Quit + +T2523xxS4L0(KadObj) ; S4L0 ; linkerdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+576)_";0\-70;0") + Do FillKDBoring(.KadObj,-8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Quit + +T2523xxS4R1(KadObj) ; S4R1 ; rechterdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+576)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-50,"5+7","ON",-1) + Quit + +T2523xxS4R0(KadObj) ; S4R0 ; rechterdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-"_(70+576)_";0\-70;0") + Do FillKDBoring(.KadObj,8, 70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-70,5,"ON",1,,,"R") + Quit + ;===================================================================================================================== + +T2523xxB5MIN2(KadObj) ; B5-2 ; klapdeur tot 600mm, breed prof, 1 steun rechts + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + ;Do FillKDBeslag(.KadObj,"KH","???","100;25;R") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-96",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+96",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxB5MIN2SLASH1(KadObj) ; B5-2/1 ; klapdeur tot 300mm, breed prof, 1 steun rechts + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + ;Do FillKDBeslag(.KadObj,"KH","???","100;25;R") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-80",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+80",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxB5MINB(KadObj) ; B5-B ; klapdeur vanaf 800mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + ;Do FillKDBeslag(.KadObj,"KH","???","100;25;L\100;25;R") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 25,100,-3,"ON",0) + Do FillKDBoring(.KadObj, 25,132,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxB5MINC(KadObj) ; B5-C ; klapdeur vanaf 1000mm, breed prof, 3 scharn. + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\c;5\-86;5") + ;Do FillKDBeslag(.KadObj,"KH","???","100;25;L\100;25;R") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 25,100,-3,"ON",0) + Do FillKDBoring(.KadObj, 25,132,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxB5MIND(KadObj) ; B5-D ; klapdeur vanaf 1000mm, breed prof, 4 scharn. + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\s2:172;5\s2:172;5\-86;5") + ;Do FillKDBeslag(.KadObj,"KH","???","100;25;L\100;25;R") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 25,100,-3,"ON",0) + Do FillKDBoring(.KadObj, 25,132,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + + + ;===================================================================================================================== + +T2523xxS5MIN2(KadObj) ; S5-2 ; klapdeur tot 600mm, smal prof, 1 steun rechts + Do FillKDPropts(.KadObj,"KLS","B","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + ;Do FillKDBeslag(.KadObj,"KH","???","100;-5;L") + Do FillKDBoring(.KadObj, 70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c",-8,"5+7","ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,"Im",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",117,-3,"IN",0,,5) + ; Uitleg/Omschrijving van de interne boringen : zie volgend "T2523xxS5MINB" / "S5-B" + Quit + +T2523xxS5MINB(KadObj) ; S5-B ; klapdeur vanaf 800mm, smal prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\-70;0") + ;Do FillKDBeslag(.KadObj,"KH","???","100;-5;L\100;-5;R") + Do FillKDBoring(.KadObj, 70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 50,-8,"5+7","ON",-1) + Do FillKDBoring(.KadObj,-50,-8,"5+7","ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,"Ip",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Ip",117,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",117,-3,"IN",0,,5) + ; "Im+0" = KadObj.ProfType.Breedte + 0 , vertrekkende van de rechtse kant (i.e. KadObj.Breedte - ...) + ; ander vb. "Ip-7" = KadObj.ProfType.Breedte - 7 , vertrekkende van de linkse kant + ; ZPos: het nulpunt van de Z-as ligt onderaan het profiel, i.e. rug/achterzijde: z=0 + Quit + +T2523xxS5MINC(KadObj) ; S5-C ; klapdeur vanaf 1000mm, smal prof, 3 scharn. + Do FillKDPropts(.KadObj,"KLS","B","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\c;0\-70;0") + ;Do FillKDBeslag(.KadObj,"KH","???","100;-5;L\100;-5;R") + Do FillKDBoring(.KadObj, 70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 50,-8,"5+7","ON",-1) + Do FillKDBoring(.KadObj,-50,-8,"5+7","ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,"Ip",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Ip",117,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",117,-3,"IN",0,,5) + ; "Im+0" = KadObj.ProfType.Breedte + 0 , vertrekkende van de rechtse kant (i.e. KadObj.Breedte - ...) + ; ander vb. "Ip-7" = KadObj.ProfType.Breedte - 7 , vertrekkende van de linkse kant + ; ZPos: het nulpunt van de Z-as ligt onderaan het profiel, i.e. rug/achterzijde: z=0 + Quit + +T2523xxS5MIND(KadObj) ; S5-D ; klapdeur vanaf 1000mm, smal prof, 4 scharn. + Do FillKDPropts(.KadObj,"KLS","B","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","70;0\s2:140;0\s2:140;0\-70;0") + ;Do FillKDBeslag(.KadObj,"KH","???","100;-5;L\100;-5;R") + Do FillKDBoring(.KadObj, 70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 50,-8,"5+7","ON",-1) + Do FillKDBoring(.KadObj,-50,-8,"5+7","ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,"Ip",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Ip",117,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",117,-3,"IN",0,,5) + ; "Im+0" = KadObj.ProfType.Breedte + 0 , vertrekkende van de rechtse kant (i.e. KadObj.Breedte - ...) + ; ander vb. "Ip-7" = KadObj.ProfType.Breedte - 7 , vertrekkende van de linkse kant + ; ZPos: het nulpunt van de Z-as ligt onderaan het profiel, i.e. rug/achterzijde: z=0 + Quit + + ;===================================================================================================================== + +T2523xxB6MIN6(KadObj) ; B6-6 ; LadeFront met 1 greep, tot 600mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",140,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDZ","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-96",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+96",40,5,"ON",-1) + Quit + +T2523xxB6MIN6SLASH1(KadObj) ; B6-6/1 ; LadeFront met 1 greep, tot 300mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",140,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDZ","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-80",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+80",40,5,"ON",-1) + Quit + +T2523xxB6MINB(KadObj) ; B6-B ; LadeFront met 2 grepen, vanaf 800mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",140,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDZ","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-70,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB7MIN6(KadObj) ; B7-6 ; LadeFront Hoog met 1 greep, tot 600mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-96",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c96",40,5,"ON",-1) + Quit + +T2523xxB7MIN6SLASH1(KadObj) ; B7-6/1 ; LadeFront Hoog met 1 greep, tot 300mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-80",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+80",40,5,"ON",-1) + Quit + +T2523xxB7MINB(KadObj) ; B7-B ; LadeFront Hoog met 2 grepen, vanaf 800mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxB0MIN6(KadObj) ; B0-6 ; LadeFront Hoog met 1 greep, tot 600mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-96",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+96",40,5,"ON",-1) + Quit + +T2523xxB0MIN6SLASH1(KadObj) ; B0-6/1 ; LadeFront Hoog met 1 greep, tot 300mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-80",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+80",40,5,"ON",-1) + Quit + +T2523xxB0MINB(KadObj) ; B0-B ; LadeFront Hoog met 2 grepen, vanaf 800mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-69;28;L\o-69;28;R") + Do FillKDBoring(.KadObj, 8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-69,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+192),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit +T2523xxB9MIN0(KadObj) ; B9-0 ; Vaste Blende boven + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBoring(.KadObj, 8,"c",5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,"c",5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 28,52,-3,"ON",0) + Do FillKDBoring(.KadObj, 28,(52+32),-3,"ON",0) + Do FillKDBoring(.KadObj,-28,52,-3,"ON",0) + Do FillKDBoring(.KadObj,-28,(52+32),-3,"ON",0) + Quit + ;===================================================================================================================== + +T2523xxBAR3(KadObj) ; BAR3 ; Kastdeur DDVKH rechts draaiend + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",2046,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\"_(86+625)_";5\-"_(86+625)_";5\-86;5") + Do FillKDBoring(.KadObj,86, 8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 40, 555.5,5,"ON",-1) + Do FillKDBoring(.KadObj, 40,-555.5,5,"ON",-1) + Quit + +T2523xxBAL3(KadObj) ; BAL3 ; Kastdeur DDVKH links draaiend + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",2046,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\"_(86+625)_";5\-"_(86+625)_";5\-86;5") + Do FillKDBoring(.KadObj,-86, 8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-40, 555.5,5,"ON",-1) + Do FillKDBoring(.KadObj,-40,-555.5,5,"ON",-1) + Quit + +T2523xxBBB(KadObj) ; BBB ; Front BZLD kast, vanaf 800mm + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",428,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBoring(.KadObj, 8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+192),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 28.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj, 28.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj, 28.5,306,-3,"ON",0) + Do FillKDBoring(.KadObj, 38.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj, 38.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj, 38.5,306,-3,"ON",0) + Do FillKDBoring(.KadObj,-28.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj,-28.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj,-28.5,306,-3,"ON",0) + Do FillKDBoring(.KadObj,-38.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj,-38.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj,-38.5,306,-3,"ON",0) + Quit + +T2523xxBB2(KadObj) ; BB2 ; Front BZLD kast, 600mm + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",428,594,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBoring(.KadObj, 8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-96",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+96",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 28.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj, 28.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj, 28.5,306,-3,"ON",0) + Do FillKDBoring(.KadObj, 38.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj, 38.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj, 38.5,306,-3,"ON",0) + Do FillKDBoring(.KadObj,-28.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj,-28.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj,-28.5,306,-3,"ON",0) + Do FillKDBoring(.KadObj,-38.5,210,-3,"ON",0) + Do FillKDBoring(.KadObj,-38.5,274,-3,"ON",0) + Do FillKDBoring(.KadObj,-38.5,306,-3,"ON",0) + Quit + ;===================================================================================================================== + +T2523xxB124MIND21011(KadObj) ; B124-D21011 ; Klapdeur vanaf 950mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-64",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+64",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 32.5,164,-3,"ON",0) + Do FillKDBoring(.KadObj, 32.5,196,-3,"ON",0) + Do FillKDBoring(.KadObj,-32.5,164,-3,"ON",0) + Do FillKDBoring(.KadObj,-32.5,196,-3,"ON",0) + Quit + +T2523xxB12ZMIND21011(KadObj) ; B12Z-D21011 ; Klapdeur vanaf 950mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-240",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+240",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 32.5,164,-3,"ON",0) + Do FillKDBoring(.KadObj, 32.5,196,-3,"ON",0) + Do FillKDBoring(.KadObj,-32.5,164,-3,"ON",0) + Do FillKDBoring(.KadObj,-32.5,196,-3,"ON",0) + Quit + +T2523xxB124MIND21010(KadObj) ; B124-D21010 ; Klapdeur tot 900mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-64",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+64",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 25,100,-3,"ON",0) + Do FillKDBoring(.KadObj, 25,132,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxB12ZMIND21010(KadObj) ; B12Z-D21010 ; Klapdeur vanaf 650mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-240",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+240",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 25,100,-3,"ON",0) + Do FillKDBoring(.KadObj, 25,132,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxD21010x2Z(KadObj) ; D21010x2Z ; Klapdeur vanaf 650mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-240",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+240",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 25,100,-3,"ON",0) + Do FillKDBoring(.KadObj, 25,132,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxB2B4MIND21010(KadObj) ; B2B4-D21010 ; Klapdeur tot 900mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+128),-40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+128),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 25,100,-3,"ON",0) + Do FillKDBoring(.KadObj, 25,132,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,100,-3,"ON",0) + Do FillKDBoring(.KadObj,-25,132,-3,"ON",0) + Quit + +T2523xxB2B4MIND21011(KadObj) ; B2B4-D21011 ; Klapdeur vanaf 950mm, breed prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,-40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+128),-40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+128),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 32.5,164,-3,"ON",0) + Do FillKDBoring(.KadObj, 32.5,196,-3,"ON",0) + Do FillKDBoring(.KadObj,-32.5,164,-3,"ON",0) + Do FillKDBoring(.KadObj,-32.5,196,-3,"ON",0) + Quit + +T2523xxB12ZMIND50010(KadObj) ; B12Z-D50010 ; Klapdeur vanaf 650mm + Do FillKDPropts(.KadObj,"LF","B","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + ; Boringen ter vervananging van de scharnieren + Do FillKDBoring(.KadObj, 70 ,10,3.2,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 102 ,10,3.2,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-16",10,3.2,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c+16",10,3.2,"ON",1,,,"R") + Do FillKDBoring(.KadObj, -102 ,10,3.2,"ON",1,,,"R") + Do FillKDBoring(.KadObj, -70 ,10,3.2,"ON",1,,,"R") + ; Stootbuffers + Do FillKDBoring(.KadObj, 10,86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-10,86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 86,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-86,-8,5,"ON",1,,,"R") + ; Greep + Do FillKDBoring(.KadObj,"c-240",-40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+240",-40,5,"ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj, 27,-27,-3.5,"ON",0,,,,"!") ; CncID="!" : niet automatisch frezen + Do FillKDBoring(.KadObj, 27,-52,-3.5,"ON",0) + Do FillKDBoring(.KadObj,-27,-27,-3.5,"ON",0,,,,"!") ; CncID="!" : niet automatisch frezen + Do FillKDBoring(.KadObj,-27,-52,-3.5,"ON",0) + Quit + ;===================================================================================================================== + +T2523xxB2F4MINF11010(KadObj) ; B2F4-F11010 ; Front korflade met 2 grepen, vanaf 650mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-65;28;L\o-65;28;R") + Do FillKDBoring(.KadObj, 8, 50,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-65,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 50,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-65,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 67 ,40,5,"ON",-1) + Do FillKDBoring(.KadObj, (67+128),40,5,"ON",-1) + Do FillKDBoring(.KadObj,-(67+128),40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,40,5,"ON",-1) + Quit + +T2523xxB16ZMINF11010(KadObj) ; B16Z-F11010 ; Front korflade met 1 greep, vanaf 650mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-65;28;L\o-65;28;R") + Do FillKDBoring(.KadObj, 8, 50,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-65,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 50,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-65,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-240",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+240",40,5,"ON",-1) + Quit + +T2523xxF11010x6Z(KadObj) ; F11010x6Z ; Front korflade met 1 greep, vanaf 650mm + Do FillKDPropts(.KadObj,"LF","O","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"LB","TANDRH","o-65;28;L\o-65;28;R") + Do FillKDBoring(.KadObj, 8, 50,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj, 8,-65,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8, 50,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-65,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c-240",40,5,"ON",-1) + Do FillKDBoring(.KadObj,"c+240",40,5,"ON",-1) + Quit + +T2523xxB114MINB11010L(KadObj) ; B114-B11010L ; Kastdeur links, greep onder + Do FillKDPropts(.KadObj,"KD","L","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-(67+128),-40,5,"ON",-1) + Do FillKDBoring(.KadObj, -67 ,-40,5,"ON",-1) + Quit + +T2523xxB114MINB11010R(KadObj) ; B114-B11010R ; Kastdeur rechts, greep onder + Do FillKDPropts(.KadObj,"KD","R","PBG-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMS","86;5\-86;5") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,67+128,-40,5,"ON",-1) + Do FillKDBoring(.KadObj, 67,-40,5,"ON",-1) + Quit + ;===================================================================================================================== + +T2523xxS110MINB11010L(KadObj) ; S110-B11010L ; Linkerdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-50,"5+7","ON",-1) + Quit + +T2523xxS130MINB11010L(KadObj) ; S130-B11010L ; Linkerdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,"c","5+7","ON",-1) + Quit + +T2523xxS150MINB11010L(KadObj) ; S150-B11010L ; Linkerdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,50,"5+7","ON",-1) + Quit + +T2523xxS100MINB11010L(KadObj) ; S100-B11010L ; Linkerdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Quit + +T2523xxS110MINB11010R(KadObj) ; S110-B11010R ; Rechterdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-50,"5+7","ON",-1) + Quit + +T2523xxS130MINB11010R(KadObj) ; S130-B11010R ; Rechterdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,"c","5+7","ON",-1) + Quit + +T2523xxS150MINB11010R(KadObj) ; S150-B11010R ; Rechterdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,50,"5+7","ON",-1) + Quit + +T2523xxS100MINB11010R(KadObj) ; S100-B11010R ; Rechterdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Quit + ;===================================================================================================================== + +T2523xxS110MINC11010L(KadObj) ; S110-C11010L ; Linkerdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-50,"5+7","ON",-1) + Quit + +T2523xxS130MINC11010L(KadObj) ; S130-C11010L ; Linkerdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,"c","5+7","ON",-1) + Quit + +T2523xxS150MINC11010L(KadObj) ; S150-C11010L ; Linkerdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,50,"5+7","ON",-1) + Quit + +T2523xxS100MINC11010L(KadObj) ; S100-C11010L ; Linkerdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","L","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,-8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-8,-86,5,"ON",1,,,"R") + Quit + +T2523xxS110MINC11010R(KadObj) ; S110-C11010R ; Rechterdeur, smal profiel, knop onder + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-50,"5+7","ON",-1) + Quit + +T2523xxS130MINC11010R(KadObj) ; S130-C11010R ; Rechterdeur, smal profiel, knop midden + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,"c","5+7","ON",-1) + Quit + +T2523xxS150MINC11010R(KadObj) ; S150-C11010R ; Rechterdeur, smal profiel, knop boven + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,50,"5+7","ON",-1) + Quit + +T2523xxS100MINC11010R(KadObj) ; S100-C11010R ; Rechterdeur, smal profiel, zonder knop + Do FillKDPropts(.KadObj,"KD","R","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\c;0\-86;0") + Do FillKDBoring(.KadObj,8, 86,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,8,-86,5,"ON",1,,,"R") + Quit + ;===================================================================================================================== + +T2523xxS120MIND11010(KadObj) ; S120-D11010 ; Klapdeur tot 600mm, smal prof, 1 steun rechts + Do FillKDPropts(.KadObj,"KLS","B","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + Do FillKDBoring(.KadObj, 70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c",-8,"5+7","ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,"Im",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",117,-3,"IN",0,,5) + ; Uitleg/Omschrijving van de interne boringen : zie volgend "T2523xxS5MINB" / "S5-B" + Quit + +T2523xxS120MIND21010(KadObj) ; S120-D21010 ; Klapdeur tot 900mm, smal prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + ;Do FillKDBeslag(.KadObj,"KH","???","100;-5;L\100;-5;R") + Do FillKDBoring(.KadObj, 70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c",-8,"5+7","ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,"Ip",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Ip",117,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",100,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",117,-3,"IN",0,,5) + ; Uitleg/Omschrijving van de interne boringen : zie volgend "T2523xxS5MINB" / "S5-B" + Quit + +T2523xxS120MIND21011(KadObj) ; S120-D21011 ; Klapdeur vanaf 900mm, smal prof, 2 steunen + Do FillKDPropts(.KadObj,"KLS","B","PSV-EV",,,"NY","HARD","KV","K","ExtendFT^Prod.GADef.KaderDeur.TemplGeneral") + Do FillKDBeslag(.KadObj,"S","BLUMK","86;0\-86;0") + ;Do FillKDBeslag(.KadObj,"KH","???","100;-5;L\100;-5;R") + Do FillKDBoring(.KadObj, 70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,-70,-8,5,"ON",1,,,"R") + Do FillKDBoring(.KadObj,"c",-8,"5+7","ON",-1) + ; (punt)Boringen voor Klapdeur Steun; kunnen ook opgenomen worden in BESLAG + Do FillKDBoring(.KadObj,"Ip",171.5,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Ip",188.5,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",171.5,-3,"IN",0,,5) + Do FillKDBoring(.KadObj,"Im",188.5,-3,"IN",0,,5) + ; Uitleg/Omschrijving van de interne boringen : zie volgend "T2523xxS5MINB" / "S5-B" + Quit + + ;===================================================================================================================== + + + + + ; Klant: XXXXXXXXXXXXXXXX nr. XXXX + ; ============================================================================================= + + + + ; ============================================================================================= + ; End of Data + ; Redirection of "Fill..."-routines to KDTEMPLATES.MAC + ; ============================================================================================= + +FillKDBeslag(KadObj,BeslagKey,BeslagTypeID,lstPosities) + ; KadObj passed by Reference! + ; has the following structure ("[]" means OPTIONAL) : + ; "LPos[@RLPos];AfRand[;PosKey1]\LPos2[@RLPos2];[AfRand2][;PosKey2]\LPos3[@RLPos3];[AfRand3][;PosKey3]" + ; - if PosKey_I is omitted, it is automatically calculated by "Beslag.Posities.Count()+1" + ; - if AfRand is omitted, it is reused from previous "Beslag.Positie" + Do FillKDBeslag^Prod.GADef.KaderDeur.Templates(.KadObj,.BeslagKey,.BeslagTypeID,.lstPosities) + Quit + +FillKDBoring(KadObj,XAndCode,YAndCode,Diam,BoringType,BoorDiepte,GlasDiam,ZPos,CodeBKey,CncID) + ; KadObj passed by Reference! + Do FillKDBoring^Prod.GADef.KaderDeur.Templates(.KadObj,.XAndCode,.YAndCode,.Diam,.BoringType,.BoorDiepte,.GlasDiam,.ZPos,.CodeBKey,.CncID) + Quit + +FillKDPropts(KadObj,ToepasID,OphangPID,ProfielTypeID,Hoogte,Breedte,VullingID,VullingExtras,Gemonteerd,Verpakking,TemplateRoutine) + ; KadObj passed by Reference! + Do FillKDPropts^Prod.GADef.KaderDeur.Templates(.KadObj,.ToepasID,.OphangPID,.ProfielTypeID,.Hoogte,.Breedte,.VullingID,.VullingExtras,.Gemonteerd,.Verpakking,.TemplateRoutine) + Quit \ No newline at end of file Index: BL/Prod/GAData/ConvertTemplates.mac.rou =================================================================== diff -u -r762 -r1152 --- BL/Prod/GAData/ConvertTemplates.mac.rou (.../ConvertTemplates.mac.rou) (revision 762) +++ BL/Prod/GAData/ConvertTemplates.mac.rou (.../ConvertTemplates.mac.rou) (revision 1152) @@ -1,5 +1,6 @@ #include BL.Prod.GAData + /// Volgende DItems worden niet ge-implementeerd: /// TBX.PRRUGV1 /// PRFRHV1