XMLWrite ; Parameters: DevObj,Taal,Opties,XSLURL #define HTML(%v) $ZCVT(%v,"O","HTML") #define Attrib(%n,%v) $$PARAMFILL^XMLWRITE(%n,$$$HTML(%v)) Quit:(..MetaItem.Code="KST") Do BEGINTAG^XMLWRITE(DevObj,"ITEM",$$$Attrib("ID",..Code), $S($G(Opties)["GAO":$$$Attrib("OMS",..Get("Oms")),1:""), $$$Attrib("Label",..Label), $$$Attrib("SubGroep",..SubGroepCode), $$$Attrib("Meta",..MetaItem.Code)) Do WRITELN^XMLWRITE(DevObj) Do ..MetaItem.XMLWrite(%this,DevObj,Taal,.Opties,Key) Do ENDTAG^XMLWRITE(DevObj,"ITEM",1) Quit CalcKost() ; Parameters: (geen) New KPKost,Key,KPlaatsID,KP Set KPlaatsID=..Get("KostPlaats") Set KP=##class(Prod.GAMeta.BT.KostPlaats).%OpenId(KPlaatsID) Set KPKost=$S(KP:KP.Kost(), 1:0) Do:(KP) KP.%Close() Quit $J((KPKost*..Get("TijdKost")/3600)+..CalcMat(),0,4) CalcMat() ; Parameters: (geen) Quit ..KostLoop("M") CalcTijd() ; Parameters: (geen) Quit ..KostLoop("T") CalcTijdMulti() ; Parameters: (geen) ; Berekent de TijdWerk en de TijdKost geeft dit terug als $LB(TijdWerk,TijdKost) ; Alleen bij Staffel>1 kan er verschil optreden tussen beide waarden : zie method emKost.StaffelCorr() Quit ..KostLoop("T2") KostLoop() ; Parameters: KostType #define NumWithZeros(%v) $TR($J(%v,3)," ","0") #define KDelim "-" New Som1,Som2,Self,Meta,Staffel,ChildID,Templ,TPDItem,KostArray,emKost,Key,blnTijdKost,SubKost,lbIDs,i Set (Som1,Som2)=0 Set Self=%this Set Meta=..MetaItem 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 TPDItem=Templ.Product.DataItemsGetChildAt(ChildID) Set KostArray=$S(KostType="M":TPDItem.KostMat,1:TPDItem.KostTijd) ; MatKost of TijdKost - array of objects Set blnTijdKost=(KostType="T2") If (..Autos.IsDefined("LoopList")) Do . Set %KostType=KostType . Set lbIDs=..EvalTemplAuto("LoopList") ; lbIDs=1 --> std kost; lbIDs="" --> geen kostcalc ! . Kill %KostType If ($G(lbIDs,1)=1)||('$$IsList^vhLib(lbIDs)) Do . Do kstLoopParams($$$KDelim_ChildID) . Set lbIDs="" For i=1:1:$LL(lbIDs) Do:($LD(lbIDs,i)) . Set %LoopKey=$LI(lbIDs,i) . Do kstLoopParams($$$KDelim_ChildID_"#"_i_$S(%LoopKey="":"", 1:$$$KDelim_%LoopKey)) Kill %LoopKey Quit $S(blnTijdKost:$LB($J(Som1,0,2),$J(Som2,0,2)), 1:$J(Som1,0,2)) kstLoopParams(LoopKey) ; Looping door de kosttijd/mat elementen Set Key="" For Set emKost=KostArray.GetNext(.Key) Quit:Key="" 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) . ;d:(LoopKey["#") WL^vhDBG("%KeyKDtl : "_%KeyKDtl) . Set SubKost=emKost.Calc(Staffel) . Set Som1=Som1+SubKost . Set:(blnTijdKost) Som2=Som2+emKost.StaffelCorr(SubKost,Staffel) Kill %KeyKDtl Quit ; opgeroepen via Prod.GAMeta.EM.KostTijd StaffelCorr() ; Param : Waarde,Staffel Quit Waarde*1 ; Indien Staffel=10 dan niet ineens delen door 10 maar wel door 5 //Set:(Staffel=10)&(%this.Variabelen["Staffel") TijdKost=TijdKost*2 ; opgeroepen via Prod.GAMeta.EM.KostTijd CalcOne() ; Parameters: Staffel,BldDtl New Multi,Reductie,Tijd,TijdKost,Mat,TijdViaMin,MatViaMin,MatBasis2,MatMultiplicant2,MatMin2,Waarde,WaardeViaMin Set Multi=$J($$caoEvalExec(..Multiplicant),0,4) Set Reductie=$J($$caoEvalExec(..Reductie),0,4) 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:($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 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:($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) */