#include BL.Prod.GAData /// Volgende DItems worden niet ge-implementeerd: /// TBX.PRRUGV1 /// PRFRHV1 /// PRSEPZ /// PRSEPV /// PRBDHOSP /// Speciale gevallen zijn: /// TBX.PRTUSW : (?) /// PRSYAFDEK : PR1Dim zonder Kenm/KenmGrp /// PRVPCP : FabrPrep is leeg ; Omzetten van een GA-Template product naar gegenereerde code volgens de nieuwe GAData ; Oproepen via : ; s sc=$$GATemplCVT^BL.Prod.GAData.ConvertTemplates(98) w sc,! GATemplCVT(GATemplID) #define DEP "DEP" New Set QuitStatus = $$$OK d WLIP^vhDBG(97,"Start convert from template") ;New GAProd,arTree,arSort,iG,iS,iI,DItem,SGCode,GroepCode ;New io,FileName,CStream,RtnCallsCalc,RtnCallsCreateBS,RtnCallsBuildXML,DFLKenmGrp Set GAProd=##class(Prod.GAData.Product).%OpenId($G(GATemplID,98)) Set FileName="\\cache02\c$\Temp\GATemplCVT_00.txt" Set CStream=##class(%File).%New(FileName) Do CStream.Open("WSN") Quit:('CStream.IsOpen) ; Initialisation Do GAProd.BuildTreeDeps("arTree") Do gtcBuildKostLabelLookup(GAProd.MetaStruct.Code) Set DFLKenmGrp=$Case(GAProd.MetaStruct.Code, "TBX":"""TB""", :"??") Set (RtnCallsCalc,RtnCallsCreateBS,RtnCallsBuildXML)="" ; Build code d WL^vhDBG("Loop through arTree") Try{ Set io=$io Use CStream.Name Set iG="" For Set iG=$O(arTree($$$DEP,iG)) Quit:(iG="") Do . Set GroepCode=$S($IsObject($G(arTree($$$DEP,iG))):arTree($$$DEP,iG).Code,1:iG) . Write "/// Set MetaGroep="""_GroepCode_"""",! . Write "/// ----------- ",! . Set RtnCallsCalc=RtnCallsCalc_"/// Groep: "_GroepCode_$$$CRLF . Set iS="" . For Set iS=$O(arTree($$$DEP,iG,iS)) Quit:(iS="") Do . . Set SGCode=$S($IsObject($G(arTree($$$DEP,iG,iS))):arTree($$$DEP,iG,iS).Code,1:iS) . . Write "/// Set MetaSubGroep="""_SGCode_"""",! . . Write "/// ----------- ",! . . Set RtnCallsCalc=RtnCallsCalc_" /// SubGroep: "_SGCode_$$$CRLF . . Set iI="" . . For Set iI=$O(arTree($$$DEP,iG,iS,iI)) Quit:(iI="") Do . . . Set DItem=arTree($$$DEP,iG,iS,iI) . . . Do gtcGenerateCode(DItem) Write !,! Write:($L(RtnCallsCalc) ) " /// RtnCallsCalc: " ,!,RtnCallsCalc,!,! Write:($L(RtnCallsCreateBS)) " /// RtnCallsCreateBS: ",!,RtnCallsCreateBS,!,! Write:($L(RtnCallsBuildXML)) " /// RtnCallsBuildXML: ",!,RtnCallsBuildXML,!,! ; Reset output device Use io ; Reset $IO Do CStream.Close() Set CStream="" d WL^vhDBG("Finished the conversion from template") }Catch(E){ Use io Close CStream.Name Set QuitStatus = $$$ERROR($$$CacheError,$ZE) } Quit QuitStatus gtcGenerateCode(DItem) ;d WL^vhDBG(DItem.Code_" - "_DItem.Label_" - "_DItem.MetaItem.Code_"; ") If DItem.MetaItem.Code["PARAM" Do . Do gtcGenerateCodePARAM(DItem) Else If DItem.MetaItem.Code?1(1"PRKENM") Do . Do gtcGenerateCodePR(DItem,"PRKENM") Else If DItem.MetaItem.Code?1(1"PR1DIM") Do . Do gtcGenerateCodePR(DItem,"PR1DIM") Else If DItem.MetaItem.Code?1(1"PRBASIC") Do . Do gtcGenerateCodePR(DItem,"PRBASIC") Else If DItem.MetaItem.Code?1(1"KST") Do . Do gtcGenerateCodeKOST(DItem) Else Do . Write "DItem onbekend!",! Quit gtcGenerateCodePARAM(DItem) Quit gtcGenerateCodeKOST(DItem) New DItemLabel,lbFromCacheWrite,txt,ParamKey,emKost,arSort,SortNr Set DItemLabel=$$gtcKostLabelLookup(DItem.Code, DItem.Product.MetaStruct.Code) Set lbFromCacheWrite="" Do gtcGenerateCodeActief(DItem) Write "/// Set MetaItem="""_DItem.MetaItem.Code_"""",! Do gtcGenerateCodeKOSTBasis(DItem) Set:($L(DItemLabel)) RtnCallsCalc=RtnCallsCalc_" $$$DoCreateIfActief("_DItemLabel_")"_$$$CRLF Quit gtcKostLabelLookup(DItemLabel,MetaCode) Quit $G(arKostLU(MetaCode,DItemLabel),DItemLabel) gtcGenerateCodeKOSTBasis(DItem) #define LijnUit(%v) $$gtcLijnUit(%v,40) #define LijnUitM(%v) $$gtcLijnUit(%v,40) #define LijnUitR(%v) $$gtcLijnUit(%v,30) #define LijnUitNum(%v) $J(%v,5) New txt,ParamKey,emKost,arSort,SortNr Write "Method Calc"_DItemLabel_"() {",! Write " Set Label="""_DItemLabel_"""",! Write " Set SubGroep="""_$$$Replace(GroepCode,"KOST","KST")_"."_SGCode_"""",! Write $$gtcItemAutoExpr("Oms"),! Write " Set SortNr=..ItemSortNr",! Write $$gtcItemAutoExpr("KostPlaats","KostPlaatsID"),! ; Write Set KostPlaatsID="TBZAAG" Write " Set IncludeBS=1 ; ($$$gd.ODSP="""")",! Write " Set Staffel=$$$gd.Staffel",! ;Write ! Write " ; SubKosten",! Write " Set (TijdWerk,TijdKost,MatKost)=0",! Set ParamKey="" For Set emKost=DItem.KostTijd.GetNext(.ParamKey) Quit:(ParamKey="") Do . Set SortNr=emKost.VolgNr . Set arSort(SortNr)=emKost Set SortNr="" For Set SortNr=$O(arSort(SortNr)) Quit:(SortNr="") Do . Set emKost=arSort(SortNr) . Set KostType=emKost.KostType . Set:(KostType="") KostType="T" . Write " Set SubKost=..CalcSubKost(Label, """_KostType_""", "_$$gtcWriteKostArgsMR($$gtcExpressionCvt(emKost.Multiplicant),$$gtcExpressionCvt(emKost.Reductie))_", """", "_$$$LijnUitNum($$gtcExpressionCvt(emKost.AParam))_", "_$$$LijnUitNum($$gtcExpressionCvt(emKost.BParam))_", "_$$$LijnUitNum($$gtcExpressionCvt(emKost.Min))_", "_$$gtcExpressionCvt(emKost.Omschrijving)_") $$$kstAddTijdKost",! Kill arSort Write:(DItem.KostMat.Count()) " ; Materiaal Kosten",! Set ParamKey="" For Set emKost=DItem.KostMat.GetNext(.ParamKey) Quit:(ParamKey="") Do . Set SortNr=emKost.VolgNr . Set arSort(SortNr)=emKost Set SortNr="" For Set SortNr=$O(arSort(SortNr)) Quit:(SortNr="") Do . Set emKost=arSort(SortNr) . Set KostType=emKost.KostType . Set:(KostType="") KostType="M" . Write " Set KostMatID="""_$$gtcExpressionCvt(emKost.KostMatID)_"""",! . Write " Set SubMat=..CalcSubKost(Label, """_KostType_""", "_$$gtcWriteKostArgsMR($$gtcExpressionCvt(emKost.Multiplicant),$$gtcExpressionCvt(emKost.Reductie))_", KostMatID, "_$$$LijnUitNum($$gtcExpressionCvt(emKost.AParam))_", "_$$$LijnUitNum($$gtcExpressionCvt(emKost.BParam))_", "_$$$LijnUitNum($$gtcExpressionCvt(emKost.Min))_", "_$$gtcExpressionCvt(emKost.Omschrijving)_") $$$kstAddMatKost",! ;Write ! Write " ; Totaal",! Write " Set KPrijs=$$$kstKPrijs",! ; ..CalcKost(KostPlaatsID,TijdKost,MatKost) Write " Set tmpLB=$$$kstCacheLB",! ; $LB("","KST",SubGroep,SortNr,Oms,TijdWerk,TijdKost,$G(lbMatKost),KostPlaatsID)_ $LB(,,,,)_ $LB(,KPrijs,,,IncludeBS) ; _ $LB(,)_ $LB(,,,,,,) ; BASIS : $LB(1-6)_ $LB(7-11)_ $LB(12-16)_ $LB(17-18)_ $LB(19-25) ",! Write " Do ..SetLBBasisToCache(Label,tmpLB)",! ;Write " ; Method CalcSubKost(KostType = ""T"", Multi, Reductie, KostMatID = """", AParam, BParam, Min, SubKostOms) As %String",! Write " Quit",! Write "}",!,! Quit gtcWriteKostArgsMR(ExprMulti,ExprReduct) #define wdM 30 #define wdR 25 ;Set ExprMulti="$$$cpArg("_ExprMulti_")" ;Set ExprReduct="$$$cpArg("_ExprReduct_")" Quit:($L(ExprMulti)>$$$wdM) ExprMulti_", "_$$gtcLijnUit(ExprReduct,($$$wdM+$$$wdR-1)-$L(ExprMulti)) Quit:($L(ExprReduct)'>$$$wdR) $$gtcLijnUit(ExprMulti,$$$wdM)_", "_$$gtcLijnUit(ExprReduct,$$$wdR) ;Quit:($L(ExprReduct)'>($$$wdR+ 0))&&($L(ExprMulti)'>($$$wdM- 0)) $$gtcLijnUit(ExprMulti,$$$wdM- 0)_", "_$$gtcLijnUit(ExprReduct,$$$wdR+ 0) ; Idem as previous line Quit:($L(ExprReduct)'>($$$wdR+ 5))&&($L(ExprMulti)'>($$$wdM- 5)) $$gtcLijnUit(ExprMulti,$$$wdM- 5)_", "_$$gtcLijnUit(ExprReduct,$$$wdR+ 5) Quit:($L(ExprReduct)'>($$$wdR+10))&&($L(ExprMulti)'>($$$wdM-10)) $$gtcLijnUit(ExprMulti,$$$wdM-10)_", "_$$gtcLijnUit(ExprReduct,$$$wdR+10) Quit $$gtcLijnUit(ExprMulti,($$$wdM+$$$wdR)-$L(ExprReduct))_", "_ExprReduct Quit $$gtcLijnUit(ExprMulti,$$$wdM)_", "_$$gtcLijnUit(ExprReduct,$$$wdR) gtcLijnUit(txt,ColWidth) Quit txt_$J("",ColWidth-$L(txt)) gtcGenerateCodePR(DItem,MetaType) New DItemLabel,lbFromCacheWrite,blnKenm,bln1Dim Set DItemLabel=DItem.Label Quit:(DItemLabel?1(1"PRRUGV1",1"PRFRHV1",1"PRSEPZ",1"PRSEPV",1"PRBDHOSP",1"PRTUSW"))&&(DItem.Product.MetaStruct.Code="TBX") Set blnKenm=(MetaType?1(1"PRKENM",1"PR1DIM")) Set bln1Dim=(MetaType?1(1"PR1DIM")) Set lbFromCacheWrite="" Do gtcGenerateCodeActief(DItem) Set lbFromCacheWrite="" Write "/// Set MetaItem="""_DItem.MetaItem.Code_"""",! Do gtcGenerateCodeCalcBasisPR(DItem,blnKenm,bln1Dim) Do gtcGenerateCodeExtendedPR(DItem) Set:($L(DItemLabel)) RtnCallsCalc=RtnCallsCalc_" $$$DoCreateIfActief("_DItemLabel_")"_$$$CRLF Quit gtcGenerateCodeActief(DItem) Write "Method Actief"_DItemLabel_"() As %Boolean {",! Write $$gtcItemAutoExpr("Actief"),! Write " Do ..SetActiefToCache("""_DItemLabel_""",Actief) ",! Write " Quit Actief",! Write "}",!,! Quit gtcGenerateCodeCalcBasisPR(DItem,blnKenm,bln1Dim) #define MacroPrefix(%v) $Case(%v, "PRKENM":"prKenm", "PRBASIC":"prBasic", "PR1DIM":"pr1dim", "KST":"kst", "PARAM":"prm", "PARAMFORMULE":"prmFML", "PARAMOBJ":"prmOBJ", :"ZZZ"_%v) New txtOms,txtKenm,txtKenmGrp,txtDimHF,txtGTarra Write "Method Calc"_DItemLabel_"() {",! Write " Do Calc"_DItemLabel_" Do:(..flgCalcExtended) CalcExtend"_DItemLabel_" Quit ",! Write "Calc"_DItemLabel_"",! Write " Set Label="""_DItemLabel_"""",! Write " Set SubGroep="""_$$$Replace(GroepCode,"PROD","PR")_"."_SGCode_"""",! Set txtOms=$$gtcItemAutoExpr("Oms") If txtOms'["PRNr" Write txtOms,! Write " Set SortNr=..ItemSortNr",! If blnKenm Do . Quit:(DItemLabel?1(1"PRSYAFDEK")) ; PR1Dim zonder Kenm/KenmGrp . Set txtKenm=$$gtcItemAutoExpr("Kenm") . If ($P(txtKenm,"$COMB$",2,99)["$$$gd.") Do . . Set txtKenm=$P(txtKenm,"$COMB$",1)_"$COMB$"_$$$Replace($P(txtKenm,"$COMB$",2,99),"$$$gd.","%GAData.") . Write txtKenm,! . Set txtKenmGrp=$$gtcItemAutoExpr("KenmGrp") . Set:($L(txtKenmGrp,"=")=2)&&($P(txtKenmGrp,"=",2)=DFLKenmGrp) txtKenmGrp=$$$Replace(txtKenmGrp,DFLKenmGrp,$S(DItem.MetaItem.Code="PR1DIM":"$$$pr1dimKenmGrp",1:"$$$prKenmKenmGrp")) . Write txtKenmGrp,! Write $$gtcItemAutoExpr("PRNr"),! Write $$gtcItemAutoExpr("KTekst"),! If txtOms["PRNr" Write txtOms,! If bln1Dim Do . Write $$gtcItemAutoExpr("PRLen"),! . Write $$gtcItemAutoExpr("BrutPct"),! . Write $$gtcItemAutoExpr("BrutStk"),! . Write $$gtcItemAutoExpr("UitvalPct"),! . Write $$gtcItemAutoExpr("UitvalStk"),! . Write $$gtcItemAutoExpr("DimHF"),! . Write $$gtcItemAutoExpr("DimHFBrut"),! . Write $$gtcItemAutoExpr("DimHFUitval"),! Write $$gtcItemAutoExpr("Qty"),! Write $$gtcItemAutoExpr("KPrijs"),! Write $$gtcItemAutoExpr("GNetto"),! Set txtGTarra=$$gtcItemAutoExpr("GTarra") Set:($L(txtGTarra,"=")=2)&&($P(txtGTarra,"=",2)="0") txtGTarra=$$$Replace(txtGTarra,"0","$$$"_$$$MacroPrefix(DItem.MetaItem.Code)_"GTarra") Write txtGTarra,! Write " Set IncludeBS=1 ; ($$$gd.ODSP="""")",! Write:(DItem.MetaItem.Code="PRBASIC") " Set tmpLB=$$$prBasicCacheLB",! ; $LB(1,"PRBASIC",SubGroep,SortNr,Oms,,,,)_ $LB(PRNr,KTekst,,,)_ $LB(Qty,KPrijs,GNetto,GTarra,IncludeBS) ; _ $LB(,)_ $LB(,,,,,,) ; BASIS : $LB(1-9)_ $LB(10-14)_ $LB(15-19)_ $LB(20-21)_ $LB(22-28) ",! Write:(DItem.MetaItem.Code="PRKENM") " Set tmpLB=$$$prKenmCacheLB",! ; $LB(1,"PRKENM",SubGroep,SortNr,Oms,,,,)_ $LB(PRNr,KTekst,,KenmGrp,Kenm)_ $LB(Qty,KPrijs,GNetto,GTarra,IncludeBS) ; _ $LB(,)_ $LB(,,,,,,) ; BASIS : $LB(1-9)_ $LB(10-14)_ $LB(15-19)_ $LB(20-21)_ $LB(22-28) ",! Write:(DItem.MetaItem.Code="PR1DIM") " Set tmpLB=$$$pr1dimCacheLB",! ; $LB(1,"PR1DIM",SubGroep,SortNr,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-9)_ $LB(10-14)_ $LB(15-19)_ $LB(20-21)_ $LB(22-28) ",! Write " Do ..SetLBBasisToCache(Label,tmpLB)",! Write " Quit",! gtcGenerateCodeExtendedPR(DItem) New ExprKMArgs,txt,ParamKey,lbTekstXmulti Write "CalcExtend"_DItemLabel_"",! Write:(DItem.Autos.IsDefined("FabrGroep")) " Set FabrGroep="_$$gtcExpressionCvt(DItem.Autos.GetAt("FabrGroep"))_"",! Write:(DItem.Autos.IsDefined("XMLTags")) " Set XMLTags="_$$gtcExpressionCvt(DItem.Autos.GetAt("XMLTags"))_"",! If DItem.Autos.IsDefined("FabrOms") Do . Set txt=$$gtcExpressionCvt(DItem.Autos.GetAt("FabrOms")) . If txt["Meta.GetOmsViaKenm" Do . . Set ExprKMArgs=$P(txt,"Meta.GetOmsViaKenm(",2) . . Set ExprKMArgs=$P(ExprKMArgs_"_",", "", "")_",1) . . Write " Set lbKMArgs="_ExprKMArgs,! . . Set txt=$$$Replace(txt,ExprKMArgs,"lbKMArgs") . . Set txt=$$$Replace(txt,"Meta.GetOmsViaKenm(lbKMArgs, "", "")","..GetOmsViaKenm(lbKMArgs,"", "",PRNr,.KenmGrp,.Kenm)") . Write " Set FabrOms="_txt,! Write:(DItem.Autos.IsDefined("FabrPrep")) " Set FabrPrep="_$$gtcExpressionCvt(DItem.Autos.GetAt("FabrPrep"))_"",! Write:(DItem.Autos.IsDefined("FabrTekst")) " Set FabrTekst="_$$gtcExpressionCvt(DItem.Autos.GetAt("FabrTekst"))_"",! Set lbTekstXmulti="" Set ParamKey="" For Set txt=DItem.Autos.GetNext(.ParamKey) Quit:(ParamKey="") Do . Quit:(ParamKey'?1(1"FabrTekst"1.E)) . Quit:(txt="") . Write " Set SpecPrm"_$TR(ParamKey,"_","")_"="_$$gtcExpressionCvt(txt)_"",! . Set lbTekstXmulti=lbTekstXmulti_","_"SpecPrm"_$TR(ParamKey,"_","") Write " Set tmpLB=$LB($G(FabrGroep), $G(XMLTags), $G(lbKMArgs), $G(FabrOms), $G(FabrPrep), $G(FabrTekst)) ; EXTEND: $LB(1-6)_ $LB(7-10)",! Set:($E(lbTekstXmulti,1)=",") $E(lbTekstXmulti,1)="" Write:($L(lbTekstXmulti)) " Set tmpLB=tmpLB_$LB(,,,$LB("_lbTekstXmulti_")) ; EXTEND: _ $LB(7-10)",! d:($L(lbTekstXmulti)) WL^vhDBG(DItemLabel_" lbTekstXmulti: "_lbTekstXmulti) Write " Do ..SetLBExtendToCache(Label,tmpLB) ",! Write " Quit",! Write "}",!,! Quit gtcItemAutoExpr(Key,VarName) #define MacroPrefix(%v) $Case(%v, "PRKENM":"prKenm", "PRBASIC":"prBasic", "PR1DIM":"pr1dim", "KST":"kst", "PARAM":"prm", "PARAMFORMULE":"prmFML", "PARAMOBJ":"prmOBJ", :"ZZZ"_%v) New txt,MParam Set VarName=$G(VarName,Key) Set txt=$$gtcExpressionCvt(DItem.Autos.GetAt(Key)) ;Set:($E(txt,1,2)="@`") $E(txt,1,2)="" If txt="" Do . Set MParam=DItem.MetaItem.Parameters.GetAt(Key) . Set:($IsObject(MParam)) txt=$$gtcExpressionCvt(MParam.Auto) . Set:($L(txt)) txt="$$$"_$$$MacroPrefix(DItem.MetaItem.Code)_Key ; Override by MetaMacro (default formule) . Set:(txt="") txt=$S(MParam.Type="Float":0, Key="Actief":1, 1:"""""") Quit " Set "_VarName_"="_txt gtcItemAutoSimple(Key,VarName) Set VarName=$G(VarName,Key) Write:(DItem.Autos.IsDefined(Key)) " Set "_VarName_"="_$$gtcExpressionCvt(DItem.Autos.GetAt("FabrGroep"))_"",! gtcExpressionCvt(expr) New Repl01,Repl01End,Args,PL,Key,blnQuit,GetKM,ReplTo01,ReplTo02 ;d WL^vhDBG("Before convert :"_expr) ;d WL^vhDBG($G(DItemLabel)_" :"_expr) // Replace Self.Val("???") by $$$gd.??? Set Repl01="Self.Val(""", Repl01End=""")" For Quit:(expr'[Repl01) Do . Set Args=$$$TextBetween(expr,Repl01,Repl01End) . Set PL=$S(Args?1.8AN:Args, Args?1""""1.8AN1"""":$TR(Args,"""",""), 1:"") . Set expr=$$$Replace(expr,Repl01_Args_Repl01End,$S($L(PL):"$$$gd."_$S(PL?1"NM"1.E:"NM."_PL,PL="OPVLL":"OPVLLI",PL="OPVLR":"OPVLRE",1:PL),1:"SelfValX("""_Args_Repl01End)) . d:(PL="")||(Args?1""""1.8AN1"""") WL^vhDBG($G(DItemLabel)_" :"_expr) // Replace Self.Get("???") Set Repl01="Self.Get(""", Repl01End=""")" For Quit:(expr'[Repl01) Do . Set Args=$$$TextBetween(expr,Repl01,Repl01End) . If Args?1.20AN Do . . Set Key=Args . . Set expr=$$$Replace(expr,Repl01_Args_Repl01End,$S($L(Key):Key,1:"SelfGetX("""_Args_Repl01End)) // Replace Self.Eval("...","...",,1) by Self.Eval("...","...") --> SkipActief=1 is no longer necessary Set Repl01="Self.Eval(""", Repl01End=""",,1)" For Quit:(expr'[Repl01) Do Quit:((blnQuit)) . Set Args=$$$TextBetween(expr,Repl01,Repl01End) . If (Args?1.20AN1""","""1.20AN) Do . . Set expr=$$$Replace(expr,Repl01_Args_Repl01End,"SelfEvalX("""_Args_""")") . Else Do . Set blnQuit=(expr'?.E1"Self.Eval("""1.20AN1""","""1.20AN1""",,1)".E) // Replace Self.Eval("...","...") --> if PL = DItemLabel, then replace by Key, else create code for Lookup in CalcCache-array "SelfEvalX(...)" Set Repl01="Self.Eval(""", Repl01End=""")" For Quit:(expr'[Repl01) Do . Set Args=$$$TextBetween(expr,Repl01,Repl01End) . If Args?1.20AN Do . . Set Key=Args . . Set PL="" . Else If Args?1.20AN1""","""1.20AN Do . . Set Key=$P(Args,""",""",1) . . Set PL=$P(Args,""",""",2) . If $L(PL)&&(PL'=$G(DItemLabel)) Do . . ; Lookup in CalcCache-array for PL . . Set Key="" . . ; Will be handled in the next part of the routine . Set expr=$$$Replace(expr,Repl01_Args_Repl01End,$S($L(Key):Key,1:"SelfEvalX("""_Args_Repl01End)) // Replace SelfEvalX("...","...") create code for Lookup in CalcCache-array Set Repl01="SelfEvalX(""", Repl01End=""")" For Quit:(expr'[Repl01) Do . Set Args=$$$TextBetween(expr,Repl01,Repl01End) . If Args?1.20AN1""","""1.20AN Do . . Set Key=$P(Args,""",""",1) . . Set PL=$P(Args,""",""",2) . If $L(PL)&&(PL'=$G(DItemLabel)) Do . . Quit:($LF(lbFromCacheWrite,"lb"_PL)) . . ; Lookup in CalcCache-array for PL . . Write " Set lb"_PL_"=..GetLBBasisFromCache("""_PL_""")",! . . Set lbFromCacheWrite=lbFromCacheWrite_$LB("lb"_PL) . . ;d WL^vhDBG("lb"_PL_" voor "_DItemLabel) . Set expr=$$$Replace(expr,Repl01_Args_Repl01End,"$LG<>") // Replace Meta.GetKenmVal() Set Repl01="Meta.GetKenmVal(", Repl01End=")" For Quit:(expr'[Repl01) Do . Set Args=$$$TextBetween(expr,Repl01,Repl01End) . Set GetKM=$P(Args,",",1) . If $$$Trim($P(Args,",",2))?1(1"PRNr",1"") Do Quit . . Set expr=$$$Replace(expr,Repl01_Args_Repl01End,"..GetKenmerkVal("_GetKM_",PRNr,.KenmGrp)") . ; Else . Set PL=$$$TextBetween($P(Args,",",2),"$LG<>",")"),";$$$licb",",$$$licb") ;d WL^vhDBG("After convert :"_expr) Quit $S($E(expr,1,2)="@`":$$$Trim($E(expr,3,99999)), $IsValidNum(expr):expr, $$$Trim(expr)="":"", 1:""""_expr_"""") gtcBuildKostLabelLookup(Meta) Do:(Meta="TBX") bklTBX Do:(Meta="ASM") bklASM Quit bklTBX Set arKostLU("TBX","KST001")="KSTMWBDRUG" Set arKostLU("TBX","KST002")="KSTZAAG" Set arKostLU("TBX","KST003")="KSTZAAG80" Set arKostLU("TBX","KST004")="KSTZGSPRUG" Set arKostLU("TBX","KST005")="KSTZGSPBD" Set arKostLU("TBX","KST006")="KSTZAAGDWV" Set arKostLU("TBX","KST007")="KSTBOORRUGS" Set arKostLU("TBX","KST008")="KSTBORUGBBOX" Set arKostLU("TBX","KST009")="KST009" Set arKostLU("TBX","KST010")="KST010" Set arKostLU("TBX","KST011")="KSTMONTRUG" Set arKostLU("TBX","KST012")="KSTBORUGSPEC" Set arKostLU("TBX","KST013")="KSTBOORBM" Set arKostLU("TBX","KST014")="KSTMONTBM" Set arKostLU("TBX","KST015")="KSTBOORTS" Set arKostLU("TBX","KST016")="KSTOOSRUGK" Set arKostLU("TBX","KST017")="KSTOOSRUGL" Set arKostLU("TBX","KST018")="KSTOOLAV1" Set arKostLU("TBX","KST019")="KSTOOSYSPB" Set arKostLU("TBX","KST020")="KSTOOLAIND" Set arKostLU("TBX","KST021")="KSTOOCPIND" Set arKostLU("TBX","KST022")="KSTOOLAECO" Set arKostLU("TBX","KST023")="KSTOOCPECO" Set arKostLU("TBX","KST024")="KSTBPRESS" Set arKostLU("TBX","KST025")="KSTMONTXTRA" Set arKostLU("TBX","KST026")="KSTBOLABBOX" Set arKostLU("TBX","KST027")="KSTMONTRUGBD" Set arKostLU("TBX","KST028")="KSTMONTBA" Set arKostLU("TBX","KST029")="KSTMONTTS" Set arKostLU("TBX","KST030")="KSTMONTSPBTS" Set arKostLU("TBX","KST031")="KSTMONTSY" Set arKostLU("TBX","KST032")="KSTBINLFRIK" Set arKostLU("TBX","KST033")="KSTBINLRLIK" Set arKostLU("TBX","KST034")="KSTBINLMONT" Set arKostLU("TBX","KST035")="KSTPREPZG" Set arKostLU("TBX","KST036")="KSTPREPMONT" Set arKostLU("TBX","KST037")="KSTPREPV1" Set arKostLU("TBX","KST038")="KSTZGRLIK" Set arKostLU("TBX","KST039")="KSTRLADAPT" Set arKostLU("TBX","KST040")="KSTSBIK" Set arKostLU("TBX","KST041")="KSTZGDWIK" Set arKostLU("TBX","KST042")="KSTASMSNIJ" Set arKostLU("TBX","KST043")="KSTCORR1239" Set arKostLU("TBX","KST044")="KSTVPKKUIS" Set arKostLU("TBX","KST045")="KSTVPKLOSO" Set arKostLU("TBX","KST046")="KSTVPKPALET" Set arKostLU("TBX","KST047")="KSTVPKLA" Set arKostLU("TBX","KST048")="KSTVPKOMWIK" Set arKostLU("TBX","KST049")="KSTVPKAFW" Quit bklASM Set arKostLU("ASM","KST001")="KST001" Quit ;Replaced SkipActief: PRNr","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),Self.Eval("KenmGrp","PRLALI",,1))-12 ;Replaced SkipActief: KenmGrp","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),SelfEvalX("KenmGrp","PRLALI"))-12 ;Replaced SkipActief: PRNr","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),Self.Eval("KenmGrp","PRLALI",,1))-12+13 ;Replaced SkipActief: KenmGrp","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),SelfEvalX("KenmGrp","PRLALI"))-12+13 ;Replaced SkipActief: PRNr","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),Self.Eval("KenmGrp","PRLALI",,1)) ;Replaced SkipActief: KenmGrp","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),SelfEvalX("KenmGrp","PRLALI")) ;Replaced SkipActief: PRNr","PRLALI :@`Meta.GetOmsViaKenm($LB( $LB("BasisType"), $LB("Kleur")), ", ")_", "_($$$gd.LD-$S($$$gd.IsSR:22,1:24))_"x"_($$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),Self.Eval("KenmGrp","PRLALI",,1))) ;Replaced SkipActief: KenmGrp","PRLALI :@`Meta.GetOmsViaKenm($LB( $LB("BasisType"), $LB("Kleur")), ", ")_", "_($$$gd.LD-$S($$$gd.IsSR:22,1:24))_"x"_($$$gd.IB-Meta.GetKenmVal("AftrekBodem",SelfEvalX("PRNr","PRLALI"),SelfEvalX("KenmGrp","PRLALI"))) ;Replaced SkipActief: PRNr","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekRug",SelfEvalX("PRNr","PRLALI"),Self.Eval("KenmGrp","PRLALI",,1)) ;Replaced SkipActief: KenmGrp","PRLALI :@`$$$gd.IB-Meta.GetKenmVal("AftrekRug",SelfEvalX("PRNr","PRLALI"),SelfEvalX("KenmGrp","PRLALI")) /* OLD code - last active on 06/03/2008 gtcGenerateCodeKOSTBasis(DItem) New txt,ParamKey,emKost,arSort,SortNr Write "Method Calc"_DItemLabel_"(blnWithDtls As %Boolean = 0) {",! Write $$gtcItemAutoExpr("Oms"),! Write $$gtcItemAutoExpr("KostPlaats","KostPlaatsID"),! ; Write Set KostPlaatsID="TBZAAG" Write " Set IncludeBS=1 ; ($$$gd.ODSP="""")",! Write " Set Staffel=$$$gd.Staffel",! ;Write ! Write " ; SubKosten",! Write " Set:(blnWithDtls) %CacheItemLabel="""_DItemLabel_"""",! Write " Set (TijdWerk,TijdKost,MatKost)=0",! Set ParamKey="" For Set emKost=DItem.KostTijd.GetNext(.ParamKey) Quit:(ParamKey="") Do . Set SortNr=emKost.VolgNr . Set KostType=emKost.KostType . Set:(KostType="") KostType="T" . Write " Set SubKost=..CalcSubKost("""_KostType_""", "_$$gtcExpressionCvt(emKost.Multiplicant)_", "_$$gtcExpressionCvt(emKost.Reductie)_", """", "_$$gtcExpressionCvt(emKost.AParam)_", "_$$gtcExpressionCvt(emKost.BParam)_", "_$$gtcExpressionCvt(emKost.Min)_", "_$$gtcExpressionCvt(emKost.Omschrijving)_") $$$kstAddTijdKost",! Write:(DItem.KostMat.Count()) " ; Materiaal Kosten",! For Set emKost=DItem.KostMat.GetNext(.ParamKey) Quit:(ParamKey="") Do . Set KostType=emKost.KostType . Set:(KostType="") KostType="M" . Write " Set KostMatID="""_$$gtcExpressionCvt(emKost.KostMatID)_"""",! . Write " Set SubMat=..CalcSubKost("""_KostType_""", "_$$gtcExpressionCvt(emKost.Multiplicant)_", "_$$gtcExpressionCvt(emKost.Reductie)_", KostMatID, "_$$gtcExpressionCvt(emKost.AParam)_", "_$$gtcExpressionCvt(emKost.BParam)_", "_$$gtcExpressionCvt(emKost.Min)_", "_$$gtcExpressionCvt(emKost.Omschrijving)_") $$$kstAddMatKost",! Write " Kill %CacheItemLabel",! ;Write ! Write " ; Totaal",! Write " Set KPrijs=$$$kstKPrijs",! ; ..CalcKost(KostPlaatsID,TijdKost,MatKost) Write " Set tmpLB=$$$kstCacheLB",! ; $LB("",Oms,TijdWerk,TijdKost,$G(lbMatKost),KostPlaatsID)_ $LB(,,,,)_ $LB(,KPrijs,,,IncludeBS) ; _ $LB(,)_ $LB(,,,,,,) ; BASIS : $LB(1-6)_ $LB(7-11)_ $LB(12-16)_ $LB(17-18)_ $LB(19-25) ",! Write " Do ..SetLBBasisToCache("""_DItemLabel_""",tmpLB)",! ;Write " ; Method CalcSubKost(KostType = ""T"", Multi, Reductie, KostMatID = """", AParam, BParam, Min, SubKostOms) As %String",! Write " Quit",! Write "}",!,! Quit gtcGenerateCodeCalcBasisPR(DItem,blnKenm,bln1Dim) New txtOms,txtKenm,txtDimHF Write "Method Calc"_DItemLabel_"(blnExtended As %Boolean = 0) {",! Write " Do Calc"_DItemLabel_" Do:(blnExtended) CalcExtend"_DItemLabel_" Quit ",! Write "Calc"_DItemLabel_"",! Set txtOms=$$gtcItemAutoExpr("Oms") */