TECH.RegisteredObject %String 1 1 APPS.Halux.common.BatchService 1 DOM.AKP.ToeleveringAPI 1 TECH.Console.TerminalInput 1 %Boolean 1 initvalue:%CacheString 1 1 %Status 1 Oproepen via : Do ##class(BL.Legacy.FLOWTOE.AdHocSplitser).%New().StelInMappingViaUI(TOENr) ToeleveringId:%String="" 0 { Set Product = ProductAPI.GeefProduct(PRNr) Set GroepKey = " 0" Set ..mdProductLijnen(TLNr) = $LB(Product.GeefKorttekst(), LijnAantal, OrderLijnVolgnummer, GroepKey) } } Do ..PrintTussenstapTitel("2", "Instellen van de groepen om te splitsen") #dim Kenmerk As %String #dim Waarde As %String #dim FilterGroepKey As %String = "#ALL#" #dim IsEersteRonde As %Boolean = $$$True #dim mdGroepKeyMapping As %String = "" #dim DefinieerMapping As %String = "GO" While (DefinieerMapping = "GO") { Do:(FilterGroepKey = "#ALL#") ..ToonProductLijnenInfo() Write !,"Geef een kenmerk om een "_$Select(IsEersteRonde:"eerste", 1:"extra")_" groepering mee te definieren : ",!,"Kies uit : DossierCode/Korttekst/KorttStart/LadeHoogte/DimensieDxB/LadeDiepte/LadeBreedte/KleurenCode/OrderLijnNr",! Set Kenmerk = ..TerminalDevice.VraagInputMetDefault("OrderLijnNr") Do ..ToonKenmerkWaardenInOrder(Kenmerk) Kill mdGroepKeyMapping Set mdGroepKeyMapping = Kenmerk Write !,"Geef voor iedere kenmerkwaarde een groepering. Deze GroepKey is vrij te kiezen (bvb: 1,2,3 of A,B,C of 'groep'+KenmerkWaarde)." Set TLNr = "" For { Set TLNr = $Order(..mdProductLijnen(TLNr)) Quit:(TLNr="") #dim lbProductLijnData As %List = ..mdProductLijnen(TLNr) Continue:(..FilterProductLijnViaGroepKey(lbProductLijnData,FilterGroepKey) = $$$False) #dim KenmerkWaarde As %String = ..GeefKenmerkVoorProductLijn(TLNr,Kenmerk) If $Data(mdGroepKeyMapping(KenmerkWaarde)) { Set GroepKey = mdGroepKeyMapping(KenmerkWaarde) } Else { Write !,"Geef GroepKey voor KenmerkWaarde '"_KenmerkWaarde_"' : " Set GroepKey = ..TerminalDevice.VraagInputMetDefault($Select($$$Not(FilterGroepKey="#ALL#"):$LI(..mdProductLijnen(TLNr),4)_"_"_KenmerkWaarde, 1:"g_"_KenmerkWaarde)) Set mdGroepKeyMapping(KenmerkWaarde) = GroepKey } Set $LI(..mdProductLijnen(TLNr),4) = GroepKey } Do ..DumpSortKeyMapping() #dim KeuzeVolgendeStap As %String = 9 Write !,"Keuze : 'Mapping verder specifieren' [1] of 'Volledige mapping opnieuw overlopen' [2] of 'Groepering Toepassen' [9] ? " Set KeuzeVolgendeStap = ..TerminalDevice.VraagInput(,1) If KeuzeVolgendeStap = 9 { Set DefinieerMapping = "STOP" Write !,"Groepering Toepassen.",! } ElseIf KeuzeVolgendeStap = 1 { Set DefinieerMapping = "GO" #dim NieuweSelectie As %String = "" Write !,"Mapping verder specifieren : Kies een GroepKey als nieuwe selectie : " Set NieuweSelectie = ..TerminalDevice.VraagInput() Set FilterGroepKey = NieuweSelectie } ElseIf KeuzeVolgendeStap = 2 { Set DefinieerMapping = "GO" Write !,"Volledige mapping opnieuw overlopen : ",! Set FilterGroepKey = "#ALL#" } Else { Write !,"Keuze is ongeldig. Automatisch doorgaan naar volgende stap : 'Groepering Toepassen'.",! Set KeuzeVolgendeStap = 9 Set DefinieerMapping = "STOP" } Set IsEersteRonde = $$$False } // Na Confirm de GroepKey Mapping vastleggen : Do ..BewaarSortKeyMapping(TOENr) Write !,"Overzicht data om de splitsing uit te voeren :",!! zw ^Lgc.FLOWTOE.SplitsToelevMapping(TOENr) Write !!,"Druk op een toets om voort te gaan ... " Do ..TerminalDevice.DrukAnyKey() Do ..PrintTussenstapTitel("3", "Simulatie", $$$True) Write !!,"De simulatie van het splitsen geeft volgende resultaat : ",! Do ##class(BL.Legacy.FLOWTOE.AdHocSplitser).%New().SimuleerToeleveringLijnenAdHocSplitsen(TOENr) Write !!,"Controleer nog eens of de aantallen bij 'SubTotaal:' in orde zijn." Write !!,"Druk op een toets om voort te gaan ... " Do ..TerminalDevice.DrukAnyKey() Do ..PrintTussenstapTitel("4", "Effectief splitsen", $$$True) Write !!,"Voer nu de splitsing uit op het Order in Admin : Raadplegen klant - Openstaande Orders - F12 - Wijzig Order - Order sluiten. " Write !!,"Druk op een toets om voort te gaan ... " Do ..TerminalDevice.DrukAnyKey() Write !!,"Controleer in Admin ('Openstaande orders') dat de orderlijnen nu andere toeleveringsnummers bevatten." Write !!,"Druk op een toets om voort te gaan ... " Do ..TerminalDevice.DrukAnyKey() Do ..PrintTussenstapTitel("5", "Opkuis data", $$$True) Write !!,"Voer uit nadat de splitsing gelukt is : " Write !,"Do ##class(BL.Legacy.FLOWTOE.AdHocSplitser).%New().CleanUpMapping(TOENr)" Write !!,"Dan ben je gereed. ",!,"Mail een screenshot van je Admin-scherm ('Openstaande orders') naar de aanvrager.",! /* Splitser v2.1 : Verzamel Producten van Toelevering Combinatie LijnNr+Korttekst oplijsten : initieel allen GroepKey " 0" SelectALL Lijnen StartModifyStep (1) : Kies kenmerk --> Lijst Mogelijke KM-waarden --> Vraag GroepKey voor iedere KM-Waarde --> Toon overzicht "GroepKey Mapping" --> Confirm Simuleer Groepering : Voor alle geselecteerde lijnen : "GroepKey Mapping" toepassen indien mogelijk --> Nieuwe Groepkey "bewaren" --> Toon overzicht "LijnInfo" + "Aantal per Key" Keuze : "Nieuwe mapping bijvoegen" of "Volledige mapping opnieuw overlopen" of "Groepering Toepassen" ? "Nieuwe mapping bijvoegen" (Optioneel) --> Toggle SelectLijnen : Kies GroepKey --> StartModifyStep (2) --> Simuleer Groepering Keuze : "Nieuwe mapping bijvoegen" of "Volledige mapping opnieuw overlopen" of "Groepering Toepassen" ? "Groepering Toepassen" : PasAanSortKeyViaMapping() oproepen via "Wijzig Order" op basis van GroepKey mapping op LijnNr+Korttekst --> Tekst tonen aan User : "Wijzig Order in Admin" */ ]]> TOENr:%String StapNummer:%String,StapInfo:%String="",StartNieuwScherm:%Boolean=0 1 1 %String ToeleveringId:%String 1 lbProductLijnData:%List,FilterGroepKey:%String 1 %Boolean 1 Kenmerk:%String 1 Kenmerk:%String 1 %ListOfDataTypes TLNr:%String,Kenmerk:%String 1 %String blnToonSubTotalen:%Boolean=1 1 TOENr:%String 1 Ad hoc splitsing Versie 2 : Hierbij wordt de splisting gedefinieerd in een mapping (Global/multidim local) en kan de splitsing eerst gesimuleerd worden (via method SimuleerToeleveringLijnenAdHocSplitsen). %String TOENr:%String %Boolean 1 Oproepen via : Do ##class(BL.Legacy.FLOWTOE.AdHocSplitser).%New().SimuleerToeleveringLijnenAdHocSplitsen(TOENr) ToeleveringId:%String,TonenMetVolledigeSortKey:%Boolean="" %String 0 { Set Product = ProductAPI.GeefProduct(PRNr) If LEVNr=6332 { Set Leverdag = ##class(BL.Legacy.FLOWTOE).GeefLeverdag(Toelevering,TLNr) Set:($Length(Leverdag)) SortKey = ProductieService.GeefCategorie(Product.GeefID())_" "_ProductieService.GeefProductieGroep(KlantID,Product.GeefID())_" "_Leverdag } Else { Set SortKey = "LEVNr"_LEVNr_";" } If ##class(BL.Legacy.FLOWTOE).IsToeleveringLijnVoorSpaceTowerProduct(Toelevering,TLNr) Set SortKey = OrderLijnVolgnummer Set SortKeyViaMapping = SortKey Do ..PasAanSortKeyViaMapping(.SortKeyViaMapping,Product,TOENr,TLNr,KlantID) If $$$Not(TonenMetVolledigeSortKey) { Set SortKeyViaMapping = ##class(TECH.StringUtils).Replace(SortKeyViaMapping, SortKey, "") } } Else { Set SortKey=$G(LastSortKey) } Set:(SortKey="") SortKey="0000" Set LastSortKey = SortKey Set arSplit(SortKey,TLNr) = "" Set arSplit2($$$LabelSubTotaal, SortKeyViaMapping) = $G(arSplit2($$$LabelSubTotaal, SortKeyViaMapping)) + LijnAantal Set arSplit2($$$LabelGroepKey, SortKeyViaMapping, TLNr)=" #:"_$J(LijnAantal,2) _ " - " _ Product.GeefKorttekst() } Write ! zw arSplit2 ]]> Ad hoc splitsing Versie 1 : deze is nog mogelijk, maar verouderde methode. Hierbij moet de implementatie van deze method aangepast worden, naargelang de gewenste splisting. 1 "_SortKey) ]]>