Index: AXimpl/Dynamics/SalesOrderIn/Converter/SalesOrderConverter.cls.xml =================================================================== diff -u -r53574 -r75031 --- AXimpl/Dynamics/SalesOrderIn/Converter/SalesOrderConverter.cls.xml (.../SalesOrderConverter.cls.xml) (revision 53574) +++ AXimpl/Dynamics/SalesOrderIn/Converter/SalesOrderConverter.cls.xml (.../SalesOrderConverter.cls.xml) (revision 75031) @@ -88,6 +88,11 @@ 1 + +DOM.common.Locatie.impl.LandRepository +1 + + %String 1 @@ -108,8 +113,43 @@ 1 + +DOM.PM.impl.ProductTypeAPIimpl +1 + + + +APPS.PM.Maatwerk.impl.VhConfigHelper +1 + + + +APPS.PM.Maatwerk.impl.VhConfigRepository +1 + + + +DOM.PM.impl.DataM.DataMProductRepository +1 + + + +WSimpl.AX.CalculatedProduct.ProductService +1 + + + +APPS.PM.Maatwerk.impl.BerekeningServiceProduct +1 + + + +AXimpl.Dynamics.SalesOrderIn.Converter.SalesOrderConverter.ToeleveringLockControleerder +1 + + -OrderAPI:DOM.VKP.OrderAPI,OrderLevenCyclusService:APPS.VKP.OrderLevenCyclusService,DateTimeAPI:TECH.DateTime.DateTimeAPI="",ProductBepaler:AXimpl.Admin.Common.ProductBepaler,DocumentReferentiesRepository:DOM.VKP.DocumentReferentiesRepository,OrderlijnenSorteerder:AXimpl.Dynamics.SalesOrderIn.Converter.OrderlijnenSorteerder,OrderSluiter:CHUI.VKP.OrderIngave.BevestigdAXOrderSluiterv01,ToeleveringService:AXimpl.Dynamics.SalesOrderIn.Converter.ToeleveringService,OrderIngaveService:APPS.VKP.OrderIngaveService,OfferteRepository:APPS.VKP.Offerte.OfferteRepository,SalesOrderLineStatusRepository:AXdata.Dynamics.SalesLineStatus.SalesOrderLineStatusRepository,VerkoopApi:DOM.VKP.VerkoopAPI,Mailer:AXimpl.Dynamics.SalesOrderIn.Converter.Mailer,LeverAdresMaker:AXimpl.Dynamics.SalesOrderIn.Converter.SalesOrderConverter.LeverAdresMaker +OrderAPI:DOM.VKP.OrderAPI,OrderLevenCyclusService:APPS.VKP.OrderLevenCyclusService,DateTimeAPI:TECH.DateTime.DateTimeAPI="",ProductBepaler:AXimpl.Admin.Common.ProductBepaler,DocumentReferentiesRepository:DOM.VKP.DocumentReferentiesRepository,OrderlijnenSorteerder:AXimpl.Dynamics.SalesOrderIn.Converter.OrderlijnenSorteerder,OrderSluiter:CHUI.VKP.OrderIngave.BevestigdAXOrderSluiterv01,ToeleveringService:AXimpl.Dynamics.SalesOrderIn.Converter.ToeleveringService,OrderIngaveService:APPS.VKP.OrderIngaveService,OfferteRepository:APPS.VKP.Offerte.OfferteRepository,SalesOrderLineStatusRepository:AXdata.Dynamics.SalesLineStatus.SalesOrderLineStatusRepository,VerkoopApi:DOM.VKP.VerkoopAPI,Mailer:AXimpl.Dynamics.SalesOrderIn.Converter.Mailer,LeverAdresMaker:AXimpl.Dynamics.SalesOrderIn.Converter.SalesOrderConverter.LeverAdresMaker,LandRepository:DOM.common.Locatie.impl.LandRepository,ProductRepository:Prod.ProductRepository="",ProductTypeAPI:DOM.PM.impl.ProductTypeAPIimpl="",DataMProductRepository:DOM.PM.impl.DataM.DataMProductRepository="",ProductService:WSimpl.AX.CalculatedProduct.ProductService="",BerekeningServiceProduct:APPS.PM.Maatwerk.impl.BerekeningServiceProduct="",VhConfigRepository:APPS.PM.Maatwerk.impl.VhConfigRepository="" 1 1 %Status @@ -128,8 +168,16 @@ Set ..SalesOrderLineStatusRepository = $$$Inject(SalesOrderLineStatusRepository, ##class(AXdata.Dynamics.SalesLineStatus.SalesOrderLineStatusRepository).%New()) Set ..Mailer = $$$Inject(Mailer,##class(AXimpl.Dynamics.SalesOrderIn.Converter.Mailer).%New()) Set ..LeverAdresMaker = $$$Inject(LeverAdresMaker,##class(AXimpl.Dynamics.SalesOrderIn.Converter.SalesOrderConverter.LeverAdresMaker).%New()) + Set ..LandRepository = $$$Inject(LandRepository,##class(DOM.common.Locatie.impl.LandRepository).%New()) + Set ..ProductTypeAPI = $$$Inject(ProductTypeAPI,##class(DOM.DomeinContext).Instance().GeefProductTypeAPI()) + Set ..DataMProductRepository = $$$Inject(DataMProductRepository, ##class(DOM.PM.impl.DataM.DataMProductRepository).%New()) + Set ..ProductService = $$$Inject(ProductService, ##class(WSimpl.AX.CalculatedProduct.ProductService).%New()) + Set ..BerekeningServiceProduct = $$$Inject(BerekeningServiceProduct, ##class(APPS.PM.Maatwerk.impl.BerekeningServiceProduct).%New()) Set ..VerkoopApi = $$$Inject(VerkoopApi, ##class(DOM.VKP.impl.VerkoopAPI).%New()) + Set ..VhConfigHelper = ##class(APPS.PM.Maatwerk.impl.VhConfigHelper).%New() + Set ..VhConfigRepository = $$$Inject(VhConfigRepository, ##class(APPS.PM.Maatwerk.impl.VhConfigRepository).%New()) + Set ..ToeleveringLockControleerder = ##class(AXimpl.Dynamics.SalesOrderIn.Converter.SalesOrderConverter.ToeleveringLockControleerder).%New() Set ..Logger = ##class(vhLib.Logger).%New() @@ -186,53 +234,54 @@ If ..VerkoopApi.BestaatKlant(..KlantID) { Set ..KLNr = $Piece(..KlantID,"||",2) - Do ..LockOrder() - - #Dim Order As DOM.VKP.Order = ..GeefOfMaakOrder(..KlantID, OrderHeader) + Do ..LockOrderEnControleerToeleveringen() - If ($IsObject(Order)) { - - Do ..ZetOrderHoofding(Order, OrderHeader) - + #Dim Order As DOM.VKP.Order = ..GeefOfMaakOrder(..KlantID, OrderHeader) + If ($IsObject(Order)) { + Do ..ZetOrderHoofding(Order, OrderHeader) Do ..ZetDocumentReferentie(Order, OrderHeader) Set OrderLineIterator = ##class(TECH.ListIterator).%New(OrderHeader.OrderLine) While OrderLineIterator.HasNext() { #dim OrderLine As AXif.Dynamics.SalesOrderIn.MessageParts.AxdEntityOrderLine = OrderLineIterator.Next() if (..IsReedsKlaargezet(OrderLine)) { - Do ..Logger.Debug("SalesOrderIn - Orderlijn is reeds klaargezet", "OrderLijn met InventTransId '" _OrderLine.InventTransId _"' is reeds klaargezet. Er wordt geen update uitgevoerd.") + Do ..Logger.Warning("SalesOrderIn - Orderlijn is reeds klaargezet", "OrderLijn met InventTransId '" _OrderLine.InventTransId _"' is reeds klaargezet. Er wordt geen update uitgevoerd.") Continue } if (..IsReedsGeproduceerd(OrderLine)) { - Do ..Logger.Debug("SalesOrderIn - Orderlijn is reeds geproduceerd", "OrderLijn met InventTransId '" _OrderLine.InventTransId _"' is reeds geproduceerd. Er wordt geen update uitgevoerd.") + Do ..Logger.Warning("SalesOrderIn - Orderlijn is reeds geproduceerd", "OrderLijn met InventTransId '" _OrderLine.InventTransId _"' is reeds geproduceerd. Er wordt geen update uitgevoerd.") Continue } - + If $$$Not(..MagOrderLijnUpdaten(OrderLine)) { Do ..Mailer.ZetMeldingGeblokkeerdeOrderLijn(Order, OrderLine.InventTransId) - Do ..Logger.Debug("SalesOrderIn - Orderlijn is geblokkeerd", "OrderLijn met InventTransId '" _OrderLine.InventTransId _"' is in verwerking. Er wordt geen update uitgevoerd.") + Do ..Logger.Warning("SalesOrderIn - Orderlijn is geblokkeerd", "OrderLijn met InventTransId '" _OrderLine.InventTransId _"' is in verwerking. Er wordt geen update uitgevoerd.") Continue } If ..IsGeannuleerd(OrderLine) { Do ..VerwijderOrderLijn(Order, OrderLine) Do ..LogLijn(OrderHeader.SalesId, OrderLine, "Verwijder OrderLijn") Continue - } + } + // hier sowieso een orderlijn die geupdated mag worden, zonder toelev en juiste status. + // -> verwijder orderlijnen met zelfde inventtransid. + If (Order.GeefAantalLijnenViaAxInventTransId(OrderLine.InventTransId) > 1) { + Do Order.VerwijderOrderLijnenViaAxInventTransId(OrderLine.InventTransId) + Do ..BewaarOrder(Order) + } + Do ..UpdateOrderLijn(..GeefOfMaakOrderLijn(Order, OrderLine), OrderLine, Order) } - + Do ..BewaarOrder(Order) - Do ..VerwijderOrderIndienGeenOrderLijnen(.Order) - Do ..OrderlijnenSorteerder.SorteerGepersisteerdeOrderLijnen(Order) Do:..IsNieuwOrder(Order) ##class(DOM.VKP.event.OrderEventRaiser).RaiseOrderGemaaktEvent(..OrderID) - Do ..SluitOrder(Order) Do ..Mailer.VerzendMeldingGeblokkeerdeOrderLijnen(Order,OrderHeader.ModifiedByAlias) @@ -249,6 +298,24 @@ ]]> + +1 + + + 1 1 %String @@ -416,7 +483,7 @@ 1 @@ -435,27 +502,37 @@ 1 DOM.VKP.Order DOM.VKP.PrijsOrderlijn 0)) { + Do PrijsOrderLijn.ZetProductID(ProductId, $$$True) + } ElseIf (IsEenMaatwerkLijn && IsAdminProductNummerMeegegeven) { + Do PrijsOrderLijn.ZetProductID(..GeefAttributeValue(OrderLine.Attribute,"AdminProductNummer"), $$$True) + } + Quit PrijsOrderLijn } If ..IsProductLijn(OrderLine) { Set PrijsOrderLijn = ..VoegToeProductLijn(Order, OrderLine) } Else { - Set PrijsOrderLijn = ..VoegToeMaatwerkLijn(Order, OrderLine) + Set PrijsOrderLijn = ..VoegToeMaatwerkLijn(Order, OrderLine, ProductId) } Quit PrijsOrderLijn ]]> + + +1 +%String + 0) { + Do ..VerwijderOrderLijn(Order, OrderLine) + Do ..BewaarOrder(Order) + Do ..LogLijn(Order.GeefID(), OrderLine, "Verwijder OrderLijn") + + If $$$Not(..ProductService.HeeftBezwaarVoorProductDelete(ReedsGekendeProductId)) { + Set ProductData.PRNr = ReedsGekendeProductId + Do ..NeemLockOpProduct(ReedsGekendeProductId) + Do ..VerwijderProduct(ReedsGekendeProductId) + Set IsProductIdHergebruikt = $$$True + } + } + + #dim MaatwerkProduct As DOM.PM.MaatwerkProduct = ..BerekeningServiceProduct.MaakProductVanKenmerken(..VhConfigHelper.GeefIngegevenKenmerken(), ..KlantID, 1, ProductData, VhConfig) + + Do ..VhConfigRepository.SaveVhConfig(CID, VhConfig, OrderLine.ProductHash, $$$False, OrderLine.InventTransId, MaatwerkProduct.GeefID()) + + If ((ReedsGekendeProductId > 0) && IsProductIdHergebruikt) { + Do ..Logger.Warning("SalesOrderIn - ProductCreatie", "Product '"_ReedsGekendeProductId_"' opnieuw gemaakt in Cache! DossierNummer = '"_OrderLine.DossierCode_"'") + Do ..UnlockProduct(ReedsGekendeProductId) + } + + Quit MaatwerkProduct.GeefID() +]]> + + + +ProductId:%String +1 + + + + +ProductId:%String +1 + + + + +ProductId:%String +1 + + + + +ProductId:%String +1 + + + + +ProductId:%String +1 + + + Order:DOM.VKP.Order,OrderHeader:AXif.Dynamics.SalesOrderIn.MessageParts.AxdEntityOrderHeader 1 @@ -515,19 +711,27 @@ Do Order.ZetOorsprong(##class(AXimpl.AxToAdminUtils).ConvertOorsprong(OrderHeader.SalesOriginId)) Do Order.ZetStatus(##class(AXimpl.AxToAdminUtils).ConvertOrderStatus("")) Do Order.ZetAfleveradres(..LeverAdresMaker.MaakLeverAdres(OrderHeader)) - Do Order.ZetVerzendingWijze(..MaakVerzendingWijze(OrderHeader)) + #dim SkipVerzendwijzeUpdatesFromTo As TECH.KeyValue.List = ##class(TECH.KeyValue.List).CreateKeyValueListFromListbuild( $LB("DD1","DI1"), $LB("DD1","GL4") ) + Do Order.ZetVerzendingWijze(..MaakVerzendingWijze(OrderHeader), SkipVerzendwijzeUpdatesFromTo) Do Order.ZetAxSalesId(OrderHeader.SalesId) - + Do Order.ZetEmailAddressTrackTrace(OrderHeader.MailAddressTrackTrace) #dim PackingSlipBody As %String = $Replace(OrderHeader.PackingSlipBody,$char(13),"") + #dim ProductieAansturingTekst As %String = $Replace(OrderHeader.ProdCmdBody,$char(13),"") + Set PackingSlipBody = $Replace(PackingSlipBody,$char(10),$$$CRLF) if (Order.GeefKlantID() = ##class(DOM.VKP.enu.Klant).SFS()) && (PackingSlipBody ? 10N) { - ;Special SFS: sap nummer moet in tekstlijn op deze manier om op etiket afgedruk te word - #dim TekstOrderlijn As DOM.VKP.TekstOrderlijn = Order.MaakNieuweTekstLijn("Opmerking:") - Do TekstOrderlijn.ZetTekstblokBehandeling(..DateTimeAPI.CurrentHorolog()_";T;;-") - Set TekstOrderlijn = Order.MaakNieuweTekstLijn(PackingSlipBody) - Do TekstOrderlijn.ZetTekstblokBehandeling(..DateTimeAPI.CurrentHorolog()_";T;;OBF") + if $$$Not(Order.GeefTekstVoorAfdrukDocumentType("") [ "Opmerking:"_$$$CRLF_PackingSlipBody ) { + ;Special SFS: sap nummer moet in tekstlijn op deze manier om op etiket afgedruk te word + #dim TekstOrderlijn As DOM.VKP.TekstOrderlijn = Order.MaakNieuweTekstLijn("Opmerking:") + Do TekstOrderlijn.ZetTekstblokBehandeling(..DateTimeAPI.CurrentHorolog()_";T;;-") + Set TekstOrderlijn = Order.MaakNieuweTekstLijn(PackingSlipBody) + Do TekstOrderlijn.ZetTekstblokBehandeling(..DateTimeAPI.CurrentHorolog()_";T;;OBF") + Set TekstOrderlijn = Order.MaakNieuweTekstLijn(ProductieAansturingTekst) + Do TekstOrderlijn.ZetTekstblokBehandeling(..DateTimeAPI.CurrentHorolog()_";T;;-") + } } else { Do Order.ZetTekstVoorAfdrukDocumentType(PackingSlipBody, ##class(DOM.VKP.enu.TekstAfdrukDocumentType).LeverBon()) + Do Order.ZetTekstVoorAfdrukDocumentType(ProductieAansturingTekst, ##class(DOM.VKP.enu.TekstAfdrukDocumentType).Toelevering()) } If $$$HasLength(OrderHeader.RefSalesOriginId) && (OrderHeader.MultiPersonalityLinkContainer="") { @@ -588,7 +792,7 @@ OrderLine:AXif.Dynamics.SalesOrderIn.MessageParts.AxdEntityOrderLine 1 %Boolean - @@ -624,11 +828,11 @@ -Order:DOM.VKP.Order,OrderLine:AXif.Dynamics.SalesOrderIn.MessageParts.AxdEntityOrderLine +Order:DOM.VKP.Order,OrderLine:AXif.Dynamics.SalesOrderIn.MessageParts.AxdEntityOrderLine,ProductId:%String="" 1 DOM.VKP.impl.DataM.DataMProductOrderlijn + + +VhConfig:%String +1 +APPS.PM.Maatwerk.dto.VhConfig + + + + +JsonStream:%Stream,RootObjectClassname:%String +1 +TECH.RegisteredObject + +