Index: APPS/Halux/Planning/PlanningService.cls.xml =================================================================== diff -u -r1019 -r1073 --- APPS/Halux/Planning/PlanningService.cls.xml (.../PlanningService.cls.xml) (revision 1019) +++ APPS/Halux/Planning/PlanningService.cls.xml (.../PlanningService.cls.xml) (revision 1073) @@ -1,12 +1,11 @@ - + Service voor de Halux planningstool. Ondersteunt het visulaliseren van het resourcegebruik voor alle toeleveringen die reeds ingegeven zijn. 1 %RegisteredObject -62200,58097.877526 0 @@ -126,6 +125,8 @@ Set Tot = Van Set Van = Hulp } + + If (##class(TECH.Config.ConfigMgr).Instance().GetBoolean("Halux_Planning_AutoResync")) { Do ..ResyncToeleveringInfo() } Set DataSet = ##class(%XML.DataSet).%New("APPS.Halux.Planning.impl.Queries:qGeefPlanningOverzicht") Do DataSet.SetArgs(Van, Tot) @@ -150,17 +151,8 @@ If ($IsObject(ToeleveringInfo)) { - Set ResultSet = ##class(%ResultSet).%New("APPS.Halux.Planning.impl.Queries:qGeefStockProblemen") - Do ResultSet.Execute(ToeleveringNummer) - While (ResultSet.Next()) - { - Set StockProbleemInfo = ##class(APPS.Halux.Planning.dto.StockProbleemInfo).%New() - - Set StockProbleemInfo.ProductCode = ResultSet.Data("ProductCode") - - Do ToeleveringDetail.StockProbleemInfoLijst.Insert(StockProbleemInfo) - } - + Set ToeleveringDetail.StockProbleemInfoLijst = ..GeefStockProbleemInfo(ToeleveringNummer) + If (ToeleveringDetail.StockProbleemInfoLijst.Count() > 0) { Set ActieInfo = ##class(APPS.Halux.Planning.dto.ActieInfo).%New() @@ -171,7 +163,7 @@ Do ToeleveringDetail.ActieInfoLijst.Insert(ActieInfo) - If (ToeleveringInfo.GeplandStatus '= ##class(APPS.Halux.Planning.enu.GeplandStatus).Vroeger()) + If (ToeleveringInfo.GeplandStatus = ##class(APPS.Halux.Planning.enu.GeplandStatus).Vroeger()) { Do AnalyseLijst.Insert("Vroeger ingepland maar stockprobleem!") Do ActieLijst.Insert("Verplaatsen naar datum waarop we de toelevering voor de stockproblemen verwachten.") @@ -225,12 +217,135 @@ Set DisplayString = "Toelevering "_ToeleveringNummer_" bestaat niet" } + Set AantalWeken = 1 + Set ToeleveringNummers = ##class(%ListOfDataTypes).%New() + Do ToeleveringNummers.Insert(ToeleveringNummer) + Set DueOutAlternatievenLijst = ..GeefDueOutAlternatieven(AantalWeken, ToeleveringNummers) + While (DueOutAlternatievenLijst.Lijst.GetAt(1).Data.Count() < 4) + { + Set AantalWeken = AantalWeken + 1 + Set DueOutAlternatievenLijst = ..GeefDueOutAlternatieven(AantalWeken, ToeleveringNummers) + } + + Set DueOutAlternatieven = ##class(%ListOfDataTypes).%New() + For i=1:1:4 + { + Do DueOutAlternatieven.Insert(DueOutAlternatievenLijst.Lijst.GetAt(1).Data.GetAt(i)) + } + + Set ToeleveringDetail.PlanningSuggestie = ..GeefPlanningSuggestie(DueOutAlternatieven) + Set ToeleveringDetail.DisplayString = DisplayString Quit ToeleveringDetail ]]> + + +Lijst van APPS.Halux.Planning.dto.StockProbleemInfo +ToeleveringNummer:%Integer +%ListOfObjects + + + + + +Lijst van timestamps +Geeft enkel een suggestie indien in de lijst geen opeenvolgende werkdagen zitten +DueOutDagen:%ListOfDataTypes +%String + 1 + Set LaatstVerwerkt = DueOutDag + While (('BevatGaten) && ('##class(TECH.DateTime).IsWeekdag(LaatstVerwerkt+1))) + { + Set LaatstVerwerkt = LaatstVerwerkt + 1 + } + } + } + + If (BevatGaten) + { + Set Suggestie = "Kan best gepland worden op: "_$C(13,10) + Set DagenIterator = ##class(TECH.ListIterator).%New(DueOutDagen) + While (DagenIterator.HasNext()) + { + Set DueOutDag = DagenIterator.Next() + Set Suggestie = Suggestie_##class(TECH.DateTime).Dag(DueOutDag)_"-"_##class(TECH.DateTime).Maand(DueOutDag)_" ("_$Extract(##class(TECH.DateTime).DagNaam(DueOutDag),1,2)_")" + If (DagenIterator.HasNext()) + { + Set Suggestie = Suggestie_", " + } + } + } + + Quit Suggestie +]]> + + AantalWeken:%Integer,ToeleveringNummers:%ListOfDataTypes APPS.Halux.Planning.dto.DueOutAlternatiefResultaat @@ -561,6 +676,7 @@ If ($IsObject(ToeleveringInfo)) { Do ToeleveringInfo.VerwijderAlleVerplaatsingen() + Do ToeleveringInfo.%Save() Do Resultaat.GelukteVerplaatsingen.Insert(ToeleveringsNummer) } Else @@ -572,6 +688,69 @@ ]]> + +ActieCode:APPS.Halux.Planning.enu.ActieCode,ActieParameter:APPS.Halux.Planning.dto.ActieParameter +APPS.Halux.Planning.dto.VoerUitActieResultaat + 0) + { + // Laatste verwachtdag zoeken van alle stockproblemen + Set VerwachtOpDag = StockProbleemInfoLijst.GetAt(1).VerwachtOpDag + For i=2:1:StockProbleemInfoLijst.Count() + { + If (StockProbleemInfoLijst.GetAt(i).VerwachtOpDag ] VerwachtOpDag) + { + Set VerwachtOpDag = StockProbleemInfoLijst.GetAt(i).VerwachtOpDag + } + } + + Set ToeleveringInfo = ##class(APPS.Halux.Planning.impl.ToeleveringInfo).%OpenId(ToeleveringNummer) + Set ToeleveringInfo.Gepland = $zdt(VerwachtOpDag,3) + Set Status = ToeleveringInfo.%Save() + If ($$$ISERR(Status)) + { + Set Resultaat.IsGeslaagd = 0 + Set Resultaat.FoutBoodschap = $$ParseStatus^vhLib(Status) + } + Else + { + Set Resultaat.IsGeslaagd = 1 + } + } + Else + { + Set Resultaat.IsGeslaagd = 0 + Set Resultaat.FoutBoodschap = "Toelevering "_ToeleveringNummer_" heeft geen stockproblemen en kan dus niet naar de verwachte levertijd verplaatst worden" + } + } + Else + { + Set Resultaat.IsGeslaagd = 0 + Set Resultaat.FoutBoodschap = "Onbekende actiecode" + } + + Quit Resultaat +]]> + + Do ##class(APPS.Halux.Planning.PlanningService).%New().ResyncToeleveringInfo() @@ -597,7 +776,7 @@ Set GlobalToelevering = GlobalToeleveringen.GetAt(Index) While ((GlobalToelevering.GeefToeNr() < DataToeNr) && (Index < GlobalToeleveringen.Count())) { - w "Create "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! + If ('##class(TECH.Config.ConfigMgr).Instance().GetBoolean("Halux_Planning_AutoResync")) { w "Create "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! } // Zolang de nummers in de global kleiner zijn moeten er nieuwe data items worden aangemaakt Set ToeleveringCreatedEventData = ##class(TECH.Events.ToeleveringCreatedEventData).%New(GlobalToelevering) Set ToeleveringCreatedEvent = ##class(TECH.Events.ToeleveringCreatedEvent).%New(ToeleveringCreatedEventData) @@ -608,7 +787,7 @@ } If (DataToeNr '= GlobalToelevering.GeefToeNr()) { - w "Deleted "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! + If ('##class(TECH.Config.ConfigMgr).Instance().GetBoolean("Halux_Planning_AutoResync")) { w "Deleted "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! } // Als de nr in de dataset verschillend is van deze in de global wil dit zeggen dat de nr in de global // zeker groter is. Het data item mag dus weg. Set Index = Index - 1 // De huidige waarde uit GlobalToeleveringen moet herbekeken worden @@ -618,17 +797,20 @@ } Else { - w "Modified "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! + If ('##class(TECH.Config.ConfigMgr).Instance().GetBoolean("Halux_Planning_AutoResync")) { w "Modified "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! } // De toeleveringnr komt in beide sets voor Set Toelevering = ##class(DOM.DomeinContext).Instance().GeefToeleveringAPI().GeefToelevering(DataToeNr) - Set ToeleveringModifiedEventData = ##class(TECH.Events.ToeleveringModifiedEventData).%New(Toelevering) - Set ToeleveringModifiedEvent = ##class(TECH.Events.ToeleveringModifiedEvent).%New(ToeleveringModifiedEventData) - Do ##class(APPS.Halux.Planning.impl.EventCatcher).ToeleveringModEventListener(ToeleveringModifiedEvent) + If ($IsObject(Toelevering)) + { + Set ToeleveringModifiedEventData = ##class(TECH.Events.ToeleveringModifiedEventData).%New(Toelevering) + Set ToeleveringModifiedEvent = ##class(TECH.Events.ToeleveringModifiedEvent).%New(ToeleveringModifiedEventData) + Do ##class(APPS.Halux.Planning.impl.EventCatcher).ToeleveringModEventListener(ToeleveringModifiedEvent) + } } } Else { - w "Deleted "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! + If ('##class(TECH.Config.ConfigMgr).Instance().GetBoolean("Halux_Planning_AutoResync")) { w "Deleted "_DataToeNr_" "_GlobalToelevering.GeefToeNr(),! } // Als er geen volgende toelevering bestaat in de global dan is de opgeslagen data te verwijderen Set ToeleveringDeletedEventData = ##class(TECH.Events.ToeleveringDeletedEventData).%New(DataToeNr) Set ToeleveringDeletedEvent = ##class(TECH.Events.ToeleveringDeletedEvent).%New(ToeleveringDeletedEventData) @@ -641,13 +823,12 @@ Set Index = Index + 1 // Alle overblijvende toeleveringen in de global zijn nieuwe toeleveringen Set GlobalToelevering = GlobalToeleveringen.GetAt(Index) - w "Create "_GlobalToelevering.GeefToeNr(),! + If ('##class(TECH.Config.ConfigMgr).Instance().GetBoolean("Halux_Planning_AutoResync")) { w "Create "_GlobalToelevering.GeefToeNr(),! } Set ToeleveringCreatedEventData = ##class(TECH.Events.ToeleveringCreatedEventData).%New(GlobalToelevering) Set ToeleveringCreatedEvent = ##class(TECH.Events.ToeleveringCreatedEvent).%New(ToeleveringCreatedEventData) Do ##class(APPS.Halux.Planning.impl.EventCatcher).ToeleveringCreatedEventListener(ToeleveringCreatedEvent) } ]]> -