Index: FLOWTOE2.mac.rou =================================================================== diff -u -r2782 -r3289 --- FLOWTOE2.mac.rou (.../FLOWTOE2.mac.rou) (revision 2782) +++ FLOWTOE2.mac.rou (.../FLOWTOE2.mac.rou) (revision 3289) @@ -7,7 +7,7 @@ Set TLLNr=$G(TLLNr),Show=$G(Show) If '$D(Detail),Show Set Insert="E" If $D(Detail),@DL(1)@(6)=$O(Detail(""),-1),Insert="A" Set Insert="E" - If Insert="R" Do + If Insert="R" Do Quit .If 'TLLNr Set TLLNr=Detail(@DL(1)@(6)) .Do KWNODE(LEVNr,TLNr,TLLNr) .Set ^KTO(LEVNr,TLNr,TLLNr)=Rec @@ -17,22 +17,24 @@ If Insert="A" Do .If 'TLLNr Set TLLNr=100 If $D(Detail) Set TLLNr=Detail(@DL(1)@(6)),@DL(1)@(6)=@DL(1)@(6)+1 .Set TLLNr=$O(^KTO(LEVNr,TLNr,TLLNr)),Insert=$S('TLLNr:"E",1:"B") - If Insert="B" Do + If Insert="B" Do Quit .If 'TLLNr Set TLLNr=Detail(@DL(1)@(6)) .Set FromNr=^KTO(LEVNr,TLNr,0),^KTO(LEVNr,TLNr,0)=FromNr+1 .Set ^KTO(LEVNr,TLNr,FromNr)=Rec,ToNr=FromNr .If $L($G(FBRef)),$P(Rec,D,2) Set $P(@FBRef@($P(Rec,D,2)),D,2)=TLNr,@FBRef@($P(Rec,D,2),"TLUNr")=$G(@FBRef@($P(Rec,D,2),"TLUNr"))_D_$P(Rec,D,15) .Do SWNODE(LEVNr,TLNr,FromNr) + .Do ProductToeleveringLijnGemaakt(LEVNr,TLNr,FromNr) .For Set FromNr=$O(^KTO(LEVNr,TLNr,FromNr),-1) Do Quit:FromNr=TLLNr ..Do LSWAP(TLNr,FromNr,ToNr) ..Set ToNr=FromNr .If Show Do FETCHDET^FLOWTOE,WL^PROC - If Insert="E" Do + If Insert="E" Do Quit .Set TLLNr=^KTO(LEVNr,TLNr,0),^KTO(LEVNr,TLNr,0)=TLLNr+1 .If $P(Rec,D,2),'$P(Rec,D,13) Set $P(Rec,D,13)=TLLNr-100 .Set ^KTO(LEVNr,TLNr,TLLNr)=Rec .If $L($G(FBRef)),$P(Rec,D,2) Set $P(@FBRef@($P(Rec,D,2)),D,2)=TLNr,@FBRef@($P(Rec,D,2),"TLUNr")=$G(@FBRef@($P(Rec,D,2),"TLUNr"))_D_$P(Rec,D,15) .Do SWNODE(LEVNr,TLNr,TLLNr) + .Do ProductToeleveringLijnGemaakt(LEVNr,TLNr,TLLNr) .If $D(UL),$D(UD),UL'>$P(UD,D,2) Set UL=UL+1 .If Show Do NIEUWV^PROC3(TLLNr) Quit @@ -298,6 +300,7 @@ Quit:R'="V" For Do ADD^vhLock("^KPR(PRNr)") Quit:%TC Do LDISP^vhLock("^KPR(PRNr)","Produkt "_$P(^KPR(PRNr,0),D)) Do KWNODE(LEVNr,TLNr,TLLNr) + Do InvoerUitvoerLinkVerbroken(LEVNr,TLNr,TLLNr) Set Rec=^KTO(LEVNr,TLNr,TLLNr),$P(Rec,D,27,28)=D,^KTO(LEVNr,TLNr,TLLNr)=Rec Do SWNODE(LEVNr,TLNr,TLLNr) For Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit:%TC Do LDISP^vhLock("^KOD(KLNr,""F"",ORDNr)","Order "_ORDNr) @@ -337,4 +340,58 @@ Do FETCHLEV^UTILI(LEVNr,"sFL") Set LevMunt=$P(sFL(0),D,11) Quit + ; + ; Event bij aanmaken van een toeleveringslijn +ProductToeleveringLijnGemaakt(LeverancierID,ToeleveringID,ToeleveringLijnID) + New Rec,ProductID,ToeleveringLijnCode,ProductToeleveringLijnEventData,ProductToeleveringLijnGemaaktEvent + Set Rec=^KTO(LeverancierID,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierID,ToeleveringID,ToeleveringLijnID) + If ProductID{ + Set ProductToeleveringLijnEventData = ##class(DOM.AKP.event.ProductToelevLijnEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID) + Set ProductToeleveringLijnGemaaktEvent = ##class(DOM.AKP.event.ProductToelevLijnGemaakt).%New(ProductToeleveringLijnEventData) + Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(ProductToeleveringLijnGemaaktEvent) + } + Quit + ; + ; Event bij verwijderen van een toeleveringslijn +ProductToeleveringLijnAnnulatie(LeverancierID,ToeleveringID,ToeleveringLijnID) + New Rec,ProductID,ToeleveringLijnCode,ProductToeleveringLijnEventData,ProductToeleveringLijnAnnulatie + Set Rec=^KTO(LeverancierID,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierID,ToeleveringID,ToeleveringLijnID) + If ProductID{ + Set ProductToeleveringLijnEventData = ##class(DOM.AKP.event.ProductToelevLijnEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID) + Set ProductToeleveringLijnAnnulatie = ##class(DOM.AKP.event.ProductToelevLijnAnnulatie).%New(ProductToeleveringLijnEventData) + Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(ProductToeleveringLijnAnnulatie) + } + Quit + ; + ; Event bij wijzigen van een toeleveringslijn +ProductToeleveringLijnGewijzigd(LeverancierID,ToeleveringID,ToeleveringLijnID,WijzigingType) + New WijzigingTypes + Set WijzigingTypes = ##class(DOM.AKP.impl.ProductToelevLijnWijzigingTypes).%New() + Do WijzigingTypes.Insert(WijzigingType) + Do ProductToeleveringLijnWijzigingen(LeverancierID, ToeleveringID, ToeleveringLijnID, WijzigingTypes) + Quit + +ProductToeleveringLijnWijzigingen(LeverancierID,ToeleveringID,ToeleveringLijnID,WijzigingTypes) + New Rec,ProductID,ToeleveringLijnCode,ProductToeleveringLijnWijzigEventData,ProductToeleveringLijnGewijzigd + Set Rec=^KTO(LeverancierID,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierID,ToeleveringID,ToeleveringLijnID) + If ProductID{ + Set ProductToeleveringLijnWijzigEventData = ##class(DOM.AKP.event.ProductToelevLijnWijzigEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID, WijzigingTypes) + Set ProductToeleveringLijnGewijzigd = ##class(DOM.AKP.event.ProductToelevLijnGewijzigd).%New(ProductToeleveringLijnWijzigEventData) + Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(ProductToeleveringLijnGewijzigd) + } + Quit + ; + ; Event bij verbreken van een KOM-link +InvoerUitvoerLinkVerbroken(LeverancierID,ToeleveringID,ToeleveringLijnID) + New Rec,ProductID,ToeleveringLijnCode,InvoerUitvoerLinkEventData,InvoerUitvoerLinkVerbrokenEvent,KlantID,OrderID,OrderLijnID,OrderLijnCode + Set Rec=^KTO(LeverancierID,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierID,ToeleveringID,ToeleveringLijnID) + Set OrderID=$P(Rec,D,27),OrderLijnID=$P(Rec,D,28) + If ProductID,OrderID{ + Set KlantID=$P(^KO1(OrderID,"F"),D) + Set OrderLijnCode=$$GeefOrderLijnCode^FLOWORD(KlantID,OrderID,OrderLijnID) + Set InvoerUitvoerLinkEventData = ##class(DOM.ProdRes.event.InvoerUitvoerLinkEventData).%New(ToeleveringID, ToeleveringLijnCode, OrderID, OrderLijnCode) + Set InvoerUitvoerLinkVerbrokenEvent = ##class(DOM.ProdRes.event.InvoerUitvoerLinkVerbrokenEvent).%New(InvoerUitvoerLinkEventData) + Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(InvoerUitvoerLinkVerbrokenEvent) + } + Quit ; \ No newline at end of file