persistent 1 DOM.PM.Maatwerk.Calc.HF.IHalffabItemBuilder 0 %Boolean 1 SamengesteldHalffabItemBuilder:DOM.PM.Maatwerk.Calc.HF.ISamengesteldHalffabItemBuilder 1 1 %Status IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken 1 %Boolean De logica van deze builder zou zodanig aangepast moeten worden dat aan de hand van de bewerkingsinfo het juiste stuk glas geselecteerd kan worden (en niet andersom zoals nu gebeurd). IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken,Context:DOM.PM.Maatwerk.Calc.HF.HalffabContext DOM.PM.Maatwerk.Calc.HF.IHalffabItem IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken %ArrayOfDataTypes IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken,Context:DOM.PM.Maatwerk.Calc.HF.HalffabContext DOM.PM.Maatwerk.Calc.HF.IHalffabItem 0 { // Filter HalffabList ; Geen verdere filtering nodig // Valideer en Genereer HalffabItem Set HFItemProcessor=##class(DOM.PM.Maatwerk.Calc.HF.impl.Processor.HFItemProcessorExactEen).%New() Do HFItemProcessor.ValideerHalffabList(.HalffabList) Set HalffabItem = HFItemProcessor.GenereerHalffabItem(HalffabList, IngegevenKenmerken, Context, ..Rol) } Else { // Geen exacte Halffab gevonden. } Quit HalffabItem ]]> IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken,Context:DOM.PM.Maatwerk.Calc.HF.HalffabContext DOM.PM.Maatwerk.Calc.HF.IHalffabItem 0 { Set HFItemProcessor=##class(DOM.PM.Maatwerk.Calc.HF.impl.Processor.HFItemProcessorExactEenBewerkt).%New() Do HFItemProcessor.ValideerHalffabList(.HalffabList) Set HalffabItem = HFItemProcessor.GenereerHalffabItem(HalffabList, IngegevenKenmerken, Context, ..Rol) Do HalffabItem.ZetAfwijkendKenmerk("LadeDiepte",HalffabItem.Halffab.LadeDiepte) } Else { // Geen Halffab gevonden met "inkortbare Lengte" en "exacte ZijwandHoogte". } Quit HalffabItem ]]> IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken,Context:DOM.PM.Maatwerk.Calc.HF.HalffabContext,TeZoekenZijwandHoogte:%String DOM.PM.Maatwerk.Calc.HF.IHalffabItem 0 { // Filter HalffabList ; Geen verdere filtering nodig Set HFItemProcessor=##class(DOM.PM.Maatwerk.Calc.HF.impl.Processor.HFItemProcessorExactEenBewerkt).%New() Do HFItemProcessor.ValideerHalffabList(HalffabList) Set HalffabItem = HFItemProcessor.GenereerHalffabItem(HalffabList, IngegevenKenmerken, Context, ..Rol) Do HalffabItem.ZetAfwijkendKenmerk("ZijwandHoogte",HalffabItem.Halffab.ZijwandHoogte) } Else { // Geen exacte Halffab gevonden op Hoogte "_TeZoekenZijwandHoogte_". } Quit HalffabItem ]]> IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken,Context:DOM.PM.Maatwerk.Calc.HF.HalffabContext,TeZoekenZijwandHoogte:%String DOM.PM.Maatwerk.Calc.HF.IHalffabItem 0 { Set HFItemProcessor=##class(DOM.PM.Maatwerk.Calc.HF.impl.Processor.HFItemProcessorExactEenBewerkt).%New() Do HFItemProcessor.ValideerHalffabList(HalffabList) Set HalffabItem = HFItemProcessor.GenereerHalffabItem(HalffabList, IngegevenKenmerken, Context, ..Rol) Do HalffabItem.ZetAfwijkendKenmerk("LadeDiepte",HalffabItem.Halffab.LadeDiepte) Do HalffabItem.ZetAfwijkendKenmerk("ZijwandHoogte",HalffabItem.Halffab.ZijwandHoogte) } Else { // Geen Halffab gevonden met "inkortbare Lengte" en Hoogte "_TeZoekenZijwandHoogte_". } Quit HalffabItem ]]> 1 %ListOfObjects 1 DOM.PM.Maatwerk.Calc.HF.IHalffabListToItemProcessor Method overriden 1 350) ; Grootst mogelijke diepte voor "twee uit één stuk" is 350 mm Set Iterator=##class(TECH.ListIterator).%New(HalffabList) While (Iterator.HasNext()) { Set Halffab=Iterator.Next() Do:(Halffab.IsBewerkbaarOp("LadeDiepte"))&&(IngegevenLadeDiepte_"#"_Halffab.LadeDiepte?1(1"270#550",1"300#550",1"350#650")) GefilterdeHalffabList.Insert(Halffab) } ]]> MinimumStrookDiepte) GefilterdeHalffabList.Insert(Halffab) } ]]> IngegevenLadeDiepte) GefilterdeHalffabList.Insert(Halffab) } ]]> Method overriden 1 0) { d WLIP^vhDBG(97,"Filter HalffabList voor "_IngegevenKenmerken.ZijwandHoogte_" "_IngegevenKenmerken.LadeDiepte_" #Items : "_HalffabList.Count()) Kill arPreferred // HalffabList doorlopen en de meest interessante overhouden Set Iterator=##class(TECH.ListIterator).%New(HalffabList) While (Iterator.HasNext()) { Set Halffab=Iterator.Next() ;d WL^vhDBG("Bewerkbaar "_$$$LCVT($$ListOfDataTypesToLB^vhLib(Halffab.BewerkbareProperties))) If (Halffab.IsBewerkbaarOp("LadeDiepte"))&&(Halffab.LadeDiepte'650 { s:(HalffabLengte=1145) HalffabLengte=1050 ; tijdelijke correctie Set IndexPreferred=$S((IngegevenLadeDiepte-60)*2+$$$SnijMargeGlas<(HalffabLengte):3, 1:HalffabLengte-IngegevenLadeDiepte+10) } ElseIf HalffabLengte=IngegevenLadeDiepte { Set IndexPreferred=1 } Else { Set IndexPreferred=$CASE(IngegevenLadeDiepteHalffabLengte, "270#550":2, "300#550":2, "350#650":2, :HalffabLengte-IngegevenLadeDiepte+10) } Quit IndexPreferred } /* */ ]]> IngegevenKenmerken:DOM.PM.Maatwerk.Calc.Common.IngegevenKenmerken,Context:DOM.PM.Maatwerk.Calc.HF.HalffabContext DOM.PM.Maatwerk.Calc.HF.IHalffabItem {LadeDiepte}:9999, Self.Val(""LD"")={LadeDiepte}:1, 1: $CASE(Self.Val(""LD"")_""#""_{LadeDiepte}, ""270#550"":2, ""300#550"":2, ""350#650"":2, :$S(({LadeDiepte}=1145)&&(Self.Val(""LD"")-60<(1145/2)):3, 1:{LadeDiepte}-Self.Val(""LD"")+1)))")) Qty $CASE(Self.Val("LD")_"#"_Meta.GetKenmVal("LadeDiepte",Self.Eval("PRNr"),Self.Eval("KenmGrp")), "270#550":1, "300#550":1, "350#650":1, :$S((Meta.GetKenmVal("LadeDiepte",Self.Eval("PRNr"),Self.Eval("KenmGrp"))=1145)&&(Self.Val("LD")-60<(1145/2)):1, 1:2)) XMLTags $S((Self.Val("LD")'=Meta.GetKenmVal("LadeDiepte",Self.Eval("PRNr","PRBXKG"),Self.Eval("KenmGrp","PRBXKG"))):$LB(""_(Self.Val("LD")-60)_""),1:"") _$S(1:$LB("2"), Self.Eval("Qty","PRBXKG")'=2:$LB(""_"(x2)"_""), 1:"") FabrOms Meta.GetOmsViaKenm($LB( $LB("BasisType"), $LB("LadeDiepte"), $LB("LiRe","LI+RE"), $LB("Kleur"), $S(Self.Val("LD")'=Meta.GetKenmVal("LadeDiepte",Self.Eval("PRNr","PRBXKG"),Self.Eval("KenmGrp","PRBXKG")):$LB(,"***INKORTEN lengte"_$S(Self.Eval("Qty","PRBXKG")=1:", uit 1 stuk ", 1:"")_" ***"),1:""), $S(Self.Val("RH")'=Meta.GetKenmVal("RugHoogte" ,Self.Eval("PRNr","PRBXKG"),Self.Eval("KenmGrp","PRBXKG")):$LB(,"***INKORTEN hoogte D naar C ***"),1:"") ), ", ") */ ]]> %Library.CacheStorage HFInschuifElementv001DefaultData listnode "HFInschuifElementv001" blnDebug