Index: WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/OrderService/ToeleveringService.cls.xml =================================================================== diff -u -r58520 -r58521 --- WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/OrderService/ToeleveringService.cls.xml (.../ToeleveringService.cls.xml) (revision 58520) +++ WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/OrderService/ToeleveringService.cls.xml (.../ToeleveringService.cls.xml) (revision 58521) @@ -60,21 +60,17 @@ Do ..LockToelevering(ToeleveringId) If ($$$Not(..IsKlaarGezet(Toelevering))) { - Do ..PasAanProductIdOpToeleveringLijnen(Toelevering, OudProductId, NieuwProductId) - Set IsToeleveringAangepast = $$$True + Set IsToeleveringAangepast = ..IsProductIdOpToeleveringLijnenAangepast(OrderId, Toelevering, OudProductId, NieuwProductId) } ElseIf ($$$Not(..ZitToeleveringInBatch(ToeleveringId))) { - Do ..PasAanProductIdOpToeleveringLijnen(Toelevering, OudProductId, NieuwProductId) - Set IsToeleveringAangepast = $$$True + Set IsToeleveringAangepast = ..IsProductIdOpToeleveringLijnenAangepast(OrderId, Toelevering, OudProductId, NieuwProductId) Do ..VerstuurMail(OrderId, ToeleveringId, OudProductId, NieuwProductId, $$$False) } Else { - // KLAARGEZET en WEL IN BATCH (al dan niet gestart) => Toeleveringen NIET aanpassen => Halux hiervan verwittigen! Set LoggingDetail = "Toelevering '"_ToeleveringId_"' is out of sync!! " _"Er zijn lijnen waarvan de ProductId '"_OudProductId_"' niet meer overeenstemt met die op de OrderLijn in AX '"_NieuwProductId _"'. Er werd getracht de ProductId aan te passen op OrderLijn en Toelevering, maar de Toelevering zit al in een Batch, dus de poging is geannuleerd. " _"ICT moet geen actie ondernemen, Halux planning is hiervan verwittigd per e-mail." Do ..Logger.Warning("ProductUpdater", LoggingDetail) - // Halux MAILEN !!! - // VRAAG: Kan een toelevering al in batch zitten terwijl die nog niet is klaargezet??? + Do ..VerstuurMail(OrderId, ToeleveringId, OudProductId, NieuwProductId, $$$True) } If IsToeleveringAangepast { @@ -101,10 +97,12 @@ ]]> - -Toelevering:DOM.AKP.Toelevering,OudProductId:%String,NieuwProductId:%String + +OrderId:%String,Toelevering:DOM.AKP.Toelevering,OudProductId:%String,NieuwProductId:%String 1 +%Boolean @@ -187,20 +193,29 @@ #dim Inhoud As %String = ##class(TECH.StringUtils).BuildText("Beste collega, " _$$$CRLF _$$$CRLF) If IsToeleveringInBatch { + Set Titel = ##class(TECH.StringUtils).BuildText("OPGELET !!! Order {0} en Toelevering {1} matchen niet met AX, in het kader van ProductUpdate.", OrderId, ToeleveringId) + Set Inhoud = Inhoud _##class(TECH.StringUtils).BuildText("Op Order {0} en Toelevering {1} werd ProductId {2} op de lijnen NIET aangepast naar {3}, in het kader van de ProductUpdate, " _$$$CRLF, OrderId, ToeleveringId, OudProductId, NieuwProductId) + Set Inhoud = Inhoud _"omdat de Toelevering in een Batch zit. Hierdoor dreigt er een foutief Product geproduceerd te worden! " _$$$CRLF + Set Inhoud = Inhoud _"Op het order in AX is de configuratie van een maatwerkproduct aangepast nadat het order al doorgestuurd werd naar Caché. " _$$$CRLF + Set Inhoud = Inhoud _"Caché heeft geprobeerd om het order en de toelevering aan te passen, maar de toelevering zit al in een batch. " _$$$CRLF + Set Inhoud = Inhoud _"In dergelijk geval wordt de toelevering (en dus ook het order in Caché) niet meer automatisch gewijzigd. " _$$$CRLF + Set Inhoud = Inhoud _"Gelieve de toelevering uit batch te halen en te 'ontklaarzetten' en dan aan de BIDI-medewerker te vragen het order opnieuw te 'OrderKlaren'. " _$$$CRLF + Set Inhoud = Inhoud _"Zodra het order terug in sync staat tussen AX en Caché kan er terug overgegaan worden tot productie ervan. " _$$$CRLF _$$$CRLF } Else { - Set Titel = ##class(TECH.StringUtils).BuildText("Order {0} en Toelevering {1} aangepast in het kader van ProductUpdate.", OrderId, ToeleveringId) + Set Titel = ##class(TECH.StringUtils).BuildText("OPGELET !!! Order {0} en Toelevering {1} aangepast in het kader van ProductUpdate.", OrderId, ToeleveringId) Set Inhoud = Inhoud _##class(TECH.StringUtils).BuildText("Op Order {0} en Toelevering {1} werd ProductId {2} op de lijnen aangepast naar {3}, in het kader van de ProductUpdate. " _$$$CRLF, OrderId, ToeleveringId, OudProductId, NieuwProductId) Set Inhoud = Inhoud _"Meer bepaald gaat het over een poging tot het updaten van een Product, die NIET is doorgevoerd, omdat het Product in kwestie in Caché al in Orders en Toeleveringen zat. " _$$$CRLF Set Inhoud = Inhoud _"In dergelijk geval willen we de coherentie van de database in Caché niet in gevaar brengen door een Product toch nog te updaten. " _$$$CRLF Set Inhoud = Inhoud _"Daarom is er, in plaats daarvan, in Caché een nieuw Product gemaakt en hebben we het oude op de Orders en Toeleveringen in kwestie verwisseld met dit nieuw Product. " _$$$CRLF _$$$CRLF - Set Inhoud = Inhoud _"Het gaat over een Toelevering die REEDS IS KLAARGEZET, maar NOG NIET IN BATCH zit. " _$$$CRLF + Set Inhoud = Inhoud _"Het gaat over een Toelevering die IS KLAARGEZET, maar NIET IN BATCH zit. " _$$$CRLF Set Inhoud = Inhoud _"Gelieve het nodige te doen, zodat de Toelevering alsnog terug juist is klaargezet. " _$$$CRLF _$$$CRLF - Set Inhoud = Inhoud _"Alvast bedankt!" _$$$CRLF _$$$CRLF - Set Inhoud = Inhoud _"ICT" } + Set Inhoud = Inhoud _"Alvast bedankt!" _$$$CRLF _$$$CRLF + Set Inhoud = Inhoud _"ICT" + Do Mail.ZetIsHTML($$$True) Do Mail.VoegToeOntvanger("planning_halux@vanhoecke.be") Do Mail.ZetVerzender($$$SystemMail("CalculatedProduct ProductUpdater")) Index: vhUnitTest/WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/OrderService/ToeleveringService/Test.cls.xml =================================================================== diff -u -r58520 -r58521 --- vhUnitTest/WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/OrderService/ToeleveringService/Test.cls.xml (.../Test.cls.xml) (revision 58520) +++ vhUnitTest/WSimpl/AX/CalculatedProduct/ProductVolgensAxAttribuutBepaler/OrderService/ToeleveringService/Test.cls.xml (.../Test.cls.xml) (revision 58521) @@ -108,6 +108,30 @@ + @@ -165,7 +189,7 @@ #dim ToeleveringService As WSimpl.AX.CalculatedProduct.ProductVolgensAxAttribuutBepaler.OrderService.ToeleveringService = ..GeefToeleveringService() Do $$$AssertTrue(ToeleveringService.IsToeleveringAangepast(..#RandomToeleveringId, ..#RandomOudProductId, ..#RandomNieuwProductId)) - Do $$$AssertEquals(Mail.GeefOnderwerp(), "Order 1000 en Toelevering 200000 aangepast in het kader van ProductUpdate.") + Do $$$AssertEquals(Mail.GeefOnderwerp(), "OPGELET !!! Order 1000 en Toelevering 200000 aangepast in het kader van ProductUpdate.") Do ..ToeleveringApi.Verifieer() Do ..Logger.Verifieer() Do ..MailApi.Verifieer() @@ -186,24 +210,25 @@ #dim LoggerMock = ##class(vhTest.Mock.vhLib.Logger).%New() Do LoggerMock.VerwachtMethodCall("Warning", "ProductUpdater", "Toelevering '"_..#RandomToeleveringId_"' is out of sync!! Er zijn lijnen waarvan de ProductId '"_..#RandomOudProductId_"' niet meer overeenstemt met die op de OrderLijn in AX '"_..#RandomNieuwProductId_"'. Er werd getracht de ProductId aan te passen op OrderLijn en Toelevering, maar de Toelevering zit al in een Batch, dus de poging is geannuleerd. ICT moet geen actie ondernemen, Halux planning is hiervan verwittigd per e-mail.") - /* + #dim Mail As TECH.Mail.Mail = ##class(TECH.Mail.impl.Mail).%New() #dim MailApiMock As TECH.Mail.MailAPI = ##class(vhTest.Mock.TECH.Mail.MailAPI).%New() Do MailApiMock.VerwachtMethodCall("MaakNieuwMail").DanReturn(Mail) Do MailApiMock.VerwachtMethodCall("VerstuurMail", Mail).DanDoeNiks() - */ + Set ..ToeleveringVoorbereidingService = ToeleveringVoorbereidingServiceStub Set ..BatchService = BatchServiceStub Set ..ToeleveringApi = ToeleveringApiMock Set ..Logger = LoggerMock + Set ..MailApi = MailApiMock #dim ToeleveringService As WSimpl.AX.CalculatedProduct.ProductVolgensAxAttribuutBepaler.OrderService.ToeleveringService = ..GeefToeleveringService() Do $$$AssertFalse(ToeleveringService.IsToeleveringAangepast(..#RandomToeleveringId, ..#RandomOudProductId, ..#RandomNieuwProductId)) - ;Do $$$AssertEquals(Mail.GeefOnderwerp(), "") + Do $$$AssertEquals(Mail.GeefOnderwerp(), "OPGELET !!! Order 1000 en Toelevering 200000 matchen niet met AX, in het kader van ProductUpdate.") Do ..ToeleveringApi.Verifieer() Do ..Logger.Verifieer() - ;Do ..MailApi.Verifieer() + Do ..MailApi.Verifieer() ]]>