Index: APPS/Verpakking/OrgaluxBonOptimizer.cls.xml =================================================================== diff -u -r72353 -r72361 --- APPS/Verpakking/OrgaluxBonOptimizer.cls.xml (.../OrgaluxBonOptimizer.cls.xml) (revision 72353) +++ APPS/Verpakking/OrgaluxBonOptimizer.cls.xml (.../OrgaluxBonOptimizer.cls.xml) (revision 72361) @@ -18,6 +18,25 @@ 730 + + +1170 + 3 * 6.7 +%Integer +1191 + + + + +770 + 3 * 6.7 +%Integer +791 + + + +%Integer +730 + + %String @@ -181,10 +200,10 @@ #dim Diepte As %Decimal = ..TweedeGrootsteDimensieGrondvlak #dim Hoogte As %Decimal = $Select(..GrootsteHoogteNietKantelbaarProduct = 1: 115, 1: ..GrootsteHoogteNietKantelbaarProduct) - While (Breedte <= ..#MaximumVerpakkingBreedteVoorEuropallet) { + While (Breedte <= ..#MaximumOverdoosBreedteVoorEuropallet) { Set Diepte = ..TweedeGrootsteDimensieGrondvlak - While ((Diepte <= ..#MaximumVerpakkingDiepteVoorEuropallet)) { + While ((Diepte <= ..#MaximumOverdoosDiepteVoorEuropallet)) { Set Hoogte = ..GrootsteHoogteNietKantelbaarProduct While ((Hoogte <= ..#MaximumVerpakkingHoogteVoorEuropallet)) { @@ -226,7 +245,7 @@ #dim MaxHoogteDoos As %Decimal = 150 While ((BesteStapeling = "") && (MaxHoogteDoos < ..#MaximumVerpakkingHoogteVoorEuropallet)) { - Set Request = ..CubeIQRequestBuilder.MaakCubeIQRequest(BoxDataLijstVanTeStapelenDozen, ..#MaximumVerpakkingBreedteVoorEuropallet, ..#MaximumVerpakkingDiepteVoorEuropallet, MaxHoogteDoos, $$$True) + Set Request = ..CubeIQRequestBuilder.MaakCubeIQRequest(BoxDataLijstVanTeStapelenDozen, ..#MaximumOverdoosBreedteVoorEuropallet, ..#MaximumOverdoosDiepteVoorEuropallet, MaxHoogteDoos, $$$True) Set Response = ..GeefParsedCubeIQResponse(Request) If ((Response.cubeiq.loadedcontainers.loadedcontainer.Count() = MinimumAantalPallettenVoorBon) && (Response.cubeiq.unloadedproducts = "")) { @@ -239,7 +258,7 @@ } If (BesteStapeling = "") { - #dim RequestVolumeVolledigePallet As APPS.Verpakking.dto.CubeIQ.Request = ..CubeIQRequestBuilder.MaakCubeIQRequest(BoxDataLijstVanTeStapelenDozen, ..#MaximumVerpakkingBreedteVoorEuropallet, ..#MaximumVerpakkingDiepteVoorEuropallet, ..#MaximumVerpakkingHoogteVoorEuropallet) + #dim RequestVolumeVolledigePallet As APPS.Verpakking.dto.CubeIQ.Request = ..CubeIQRequestBuilder.MaakCubeIQRequest(BoxDataLijstVanTeStapelenDozen, ..#MaximumOverdoosBreedteVoorEuropallet, ..#MaximumOverdoosDiepteVoorEuropallet, ..#MaximumOverdoosHoogteVoorEuropallet) Set BesteStapeling = ..GeefParsedCubeIQResponse(RequestVolumeVolledigePallet) If (BesteStapeling = "") { @@ -259,11 +278,11 @@ %Integer dan de toegelaten " _ ..#MaximumVerpakkingBreedteVoorEuropallet _ ". Dit dient manueel te worden nagekeken zodat dit kan worden opgelost en dit niet meer voorvalt." + #dim FoutOmschrijving As %String = "Er is minstens 1 product van bon " _ ..BonId _ " die niet kon ondergebracht worden in de overdozen ondanks de producten groter dan een pallet al werden uitgefilterd. Dit komt normaal enkel voor als er een lang product is waarbij de langste dimensie + 3*6.7 > dan de toegelaten " _ ..#MaximumOverdoosBreedteVoorEuropallet _ ". Dit dient manueel te worden nagekeken zodat dit kan worden opgelost en dit niet meer voorvalt." Do ..Logger.ErrorMail("Bepaal minimum aantal palletten", FoutOmschrijving) Set Exception = ##class(TECH.Exceptions.InvalidResponseException).%New(FoutOmschrijving) Do ##class(TECH.ExceptionHandler).Throw(Exception) @@ -416,7 +435,7 @@ } #dim BoxDataOverdoosAangevuld As DS.Prod.OptiBox.BoxDataMetID = ..CopyBoxData(BoxDataOverdoos) - Set BoxDataOverdoosAangevuld.Breedte = $Select((Overdoos.overallwidth + 10) > 1170 : 1170, 1: Overdoos.overallwidth) //Indien overdoos toch net groter is dan 1170, waarde naar 1170 zetten, dan spant het maar een beetje ;) //10 Als extra marge zodat het stapelen goed lukt + Set BoxDataOverdoosAangevuld.Breedte = $Select((Overdoos.overallwidth + 10) > ..#MaximumVerpakkingBreedteVoorEuropallet : ..#MaximumVerpakkingBreedteVoorEuropallet, 1: Overdoos.overallwidth) //Indien overdoos toch net groter is dan 1170, waarde naar 1170 zetten, dan spant het maar een beetje ;) //10 Als extra marge zodat het stapelen goed lukt Set BoxDataOverdoosAangevuld.Diepte = Overdoos.overalllength + 10 //10 Als extra marge zodat het stapelen goed lukt Set BoxDataOverdoosAangevuld.Hoogte = Overdoos.overallheight + 10 //10 Als extra marge zodat het stapelen goed lukt #dim SnijData As DS.Prod.OptiBox.SnijData = ..MaakSnijDataVoorOverdoos(BoxDataOverdoosAangevuld, Overdoos, .OptiData, AfbeeldingCode, SnijDataParent, IsOverdoosNodig) @@ -764,7 +783,7 @@ #dim JSONStream = ##class(%Stream.GlobalBinary).%New() Do JSONStream.Write(RequestString) - Do ..Logger.Debug("BlackBox request", JSONStream) + ;Do ..Logger.Debug("BlackBox request", JSONStream) Set HttpRequest = ##class(%Net.HttpRequest).%New() Set HttpRequest.Server = ##class(TECH.Config.ConfigMgr).Instance().GetString("APPS.Verpakking.OrgaluxBonOptimizer.BlackBoxURL") @@ -859,7 +878,7 @@ #dim GrondOppervlakFactor As %Integer = ##class(TECH.Math).Pow((Overdoos.overalllength * Overdoos.overallwidth), 1/2) * 0.1 #dim StabiliteitFactor As %Decimal = Overdoos.overallheight / ##class(TECH.Math).Min(Overdoos.overalllength, Overdoos.overallwidth) * 50 #dim TotaleKartonOppervlakteFactor As %Integer = ##class(TECH.Math).Pow((2 * ((Overdoos.overalllength * Overdoos.overallwidth) + (Overdoos.overalllength * Overdoos.overallheight) + (Overdoos.overallheight * Overdoos.overallwidth))), 1/2) * 3 - #dim GrondOppervlakKleinerDanHalvePalletFactor As %Integer = $Select(((..GrootsteDimensieGrondvlak < (..#MaximumVerpakkingDiepteVoorEuropallet)) && (..TweedeGrootsteDimensieGrondvlak < (..#MaximumVerpakkingBreedteVoorEuropallet / 2))):-200, 1:0) + #dim GrondOppervlakKleinerDanHalvePalletFactor As %Integer = $Select(((..GrootsteDimensieGrondvlak < (..#MaximumOverdoosBreedteVoorEuropallet)) && (..TweedeGrootsteDimensieGrondvlak < (..#MaximumOverdoosDiepteVoorEuropallet / 2))):-200, 1:0) #dim VierkantigheidFactor As %Integer = ##class(TECH.Math).Max(##class(TECH.Math).Max(##class(TECH.Math).Abs(Overdoos.overalllength - Overdoos.overallwidth), ##class(TECH.Math).Abs(Overdoos.overalllength - Overdoos.overallheight)), ##class(TECH.Math).Abs(Overdoos.overallheight - Overdoos.overallwidth)) * 0.5 #dim HoogteKleinerDan33cm As %Integer = $Select(Overdoos.overallheight < 330:-100, 1:0) @@ -1001,7 +1020,7 @@ If $$$Not(BoxData.VolumeVan = "") { If $$$Not(BoxData.VolumeVan.%Id() = "OL||Antislipmat groep||1") { - Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.UnimplementedException).%New("Groepering "_ BoxData.VolumeVan.%Id() _"' is nog niet geïmplementeerd bij de optimalisatie van de verpakking van de orgalux bonnen.")) + Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.UnimplementedException).%New("Groepering "_ BoxData.VolumeVan.%Id() _"' is nog niet geïmplementeerd bij de optimalisatie van de verpakking van de orgalux bonnen. Dit zorgt voor problemen bij bon " _..BonId _".")) } } Else { Do GegroepeerdeBoxDataLijst.Insert(BoxData) @@ -1041,7 +1060,7 @@ Set BoxData.Diepte = ..CalcMetDefault(1, BoxData.DiepteExec, .Params) Set BoxData.Hoogte = ..CalcMetDefault(1, BoxData.HoogteExec, .Params) - If ((##class(TECH.Math).Max(BoxData.Breedte, BoxData.Diepte) + (2 * 4)) >= (..#MaximumVerpakkingBreedteVoorEuropallet )) || ((##class(TECH.Math).Min(BoxData.Breedte, BoxData.Diepte) + (2 * 4)) >= ..#MaximumVerpakkingDiepteVoorEuropallet) { // 2 * 4 is svoor dikte kartonverpakking in rekening te brengen + If ((##class(TECH.Math).Max(BoxData.Breedte, BoxData.Diepte) >= (..#MaximumVerpakkingBreedteVoorEuropallet )) || (##class(TECH.Math).Min(BoxData.Breedte, BoxData.Diepte) >= ..#MaximumVerpakkingDiepteVoorEuropallet)) { Do ..Logger.Debug("PastProductOpEuropallet", "Genest product "_PRNr_" past niet op een europallet voor bon " _ BonID_". Er zijn " _ Aantal _" producten genest in deze verpakking.") } Else { Do BoxDataLijst.Insert(BoxData) @@ -1057,7 +1076,7 @@ Set BoxData.Diepte = ..CalcMetDefault(1, BoxData.DiepteExec, .Params) Set BoxData.Hoogte = ..CalcMetDefault(1, BoxData.HoogteExec, .Params) - If ((##class(TECH.Math).Max(BoxData.Breedte, BoxData.Diepte) + (2 * 4)) >= ..#MaximumVerpakkingBreedteVoorEuropallet) || ((##class(TECH.Math).Min(BoxData.Breedte, BoxData.Diepte) + (2 * 4)) >= ..#MaximumVerpakkingDiepteVoorEuropallet) { // 3 * 2 * 4 is svoor dikte kartonverpakking in rekening te brengen + If ((##class(TECH.Math).Max(BoxData.Breedte, BoxData.Diepte) >= ..#MaximumVerpakkingBreedteVoorEuropallet) || (##class(TECH.Math).Min(BoxData.Breedte, BoxData.Diepte) >= ..#MaximumVerpakkingDiepteVoorEuropallet)) { Do ..Logger.Debug("PastProductOpEuropallet", "Product "_PRNr_" past niet op een europallet voor bon " _ BonID_".") } Else { Do BoxDataLijst.Insert(BoxData) Index: vhUnitTest/APPS/Verpakking/OrgaluxBonOptimizer/Test.cls.xml =================================================================== diff -u -r72353 -r72361 --- vhUnitTest/APPS/Verpakking/OrgaluxBonOptimizer/Test.cls.xml (.../Test.cls.xml) (revision 72353) +++ vhUnitTest/APPS/Verpakking/OrgaluxBonOptimizer/Test.cls.xml (.../Test.cls.xml) (revision 72361) @@ -140,7 +140,7 @@ dan de toegelaten 1170. Dit dient manueel te worden nagekeken zodat dit kan worden opgelost en dit niet meer voorvalt.") + #dim Substrings = ##class(TECH.ListUtils).CreateListOfDataTypes("Er is minstens 1 product van bon die niet kon ondergebracht worden in de overdozen ondanks de producten groter dan een pallet al werden uitgefilterd. Dit komt normaal enkel voor als er een lang product is waarbij de langste dimensie + 3*6.7 > dan de toegelaten 1191. Dit dient manueel te worden nagekeken zodat dit kan worden opgelost en dit niet meer voorvalt.") Do ..ZetVerwachteExceptie(##class(Tools.Test.VerwachteExceptie).%New("TECH.Exceptions.InvalidResponseException", Substrings)) #dim BoxDataList As DS.Prod.OptiBox.BoxDataMetID = ..GeefLijstBoxDataMetKartonMetBufferZone() Index: APPS/Verpakking/CubeIQRequestBuilder.cls.xml =================================================================== diff -u -r72353 -r72361 --- APPS/Verpakking/CubeIQRequestBuilder.cls.xml (.../CubeIQRequestBuilder.cls.xml) (revision 72353) +++ APPS/Verpakking/CubeIQRequestBuilder.cls.xml (.../CubeIQRequestBuilder.cls.xml) (revision 72361) @@ -79,9 +79,9 @@ Set CubeIQProduct = ##class(APPS.Verpakking.dto.CubeIQ.Request.Product).%New() Set CubeIQProduct.productid = BoxData.OrigineleBoxDataID _ "_" _..GeefKorttekst(BoxData.ObjRef) _ "_" _ BoxData.AantalProductenGenest - Set CubeIQProduct.length = BoxData.Diepte + (2 * 4) //Grootorde kartondikte in rekening brengen - Set CubeIQProduct.width = BoxData.Breedte + (2 * 4) //Grootorde kartondikte in rekening brengen - Set CubeIQProduct.height = BoxData.Hoogte + (2 * 4) //Grootorde kartondikte in rekening brengen + Set CubeIQProduct.length = BoxData.Diepte + (3 * 6.7) //Grootorde kartondikte in rekening brengen + Set CubeIQProduct.width = BoxData.Breedte + (3 * 6.7) //Grootorde kartondikte in rekening brengen + Set CubeIQProduct.height = BoxData.Hoogte + (3 * 6.7) //Grootorde kartondikte in rekening brengen ;Set CubeIQProduct.weight = ..GeefGewichtVanProduct(BoxData.ObjRef) Set CubeIQProduct.turnable = $$$True Set CubeIQProduct.flatok = $$$True