FLOWTOE2 ;Toelevering [ 01/10/2003 4:15 PM ] ; INSERT(Rec,Insert,TLLNr,Show) ;Insert B=Before, A=After, E=End, R=Replace New R,PRNr,ORDNr,OLNr,KLNr,FromNr,ToNr Set $P(Rec,D,15)=$$UNIEKLNR^FLOWTOE(LEVNr,TLNr) 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 Quit .If 'TLLNr Set TLLNr=Detail(@DL(1)@(6)) .Do KWNODE(LEVNr,TLNr,TLLNr) .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 EL^PROC Quit 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 Quit .If 'TLLNr Set TLLNr=Detail(@DL(1)@(6)) .Set FromNr=^KTO(LEVNr,TLNr,0),^KTO(LEVNr,TLNr,0)=FromNr+1 .If $P(Rec,D,2),'$P(Rec,D,13) Set $P(Rec,D,13)=FromNr-100 .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 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 ; ; Insert produkt PINSERT(Insert,Line,PRNr,Aantal,Prijs,Korting1,Korting2,LevTerm,Show) New B,R Set UZ=^KTO(LEVNr,TLNr,0)-100 Set:$G(Insert)="" Insert="E" Set Line=$G(Line) Set:'$D(Show) Show=1 If 'Line,Show Set Line=$G(Detail(@DL(1)@(6))) If 'Line Set Insert="E" If Insert="E" Set Line="" Set PRNr=$G(PRNr),Aantal=$G(Aantal),Prijs=$G(Prijs) Set Korting1=$G(Korting1),Korting2=$G(Korting2),LevTerm=$G(LevTerm) Set K="?" If PRNr Set K=$$COMPR^PRODUKT(PRNr),K=$E(K,1,$L(K)-1) Do Ingave^Flow.Toelev.NieuweProductToelevLijn(Aantal,Prijs,Korting1,Korting2,LevTerm) Set R="" If K'="-",$O(B(100))'="" For I=1:1:35 Set R=R_$G(B(I+100))_D If $L(R) Do INSERT(R,Insert,Line,Show),PRCOUNT^FLOW("+","KTO") Set:K="-" Input="" Quit ; ; Insert Tekst TINSERT(Insert,Line,Text,Show,BlockId) New B,R Set UZ=^KTO(LEVNr,TLNr,0)-100 Set:$G(Insert)="" Insert="E" Set Line=$G(Line) Set:'$D(Show) Show=1 Set BlockId=$G(BlockId) Set:BlockId="" BlockId=$P(Text,D,18) If 'Line,Show Set Line=$G(Detail(@DL(1)@(6))) If 'Line Set Insert="E" If Insert="E" Set Line="" Set Text=$G(Text) If $L(Text,D)>1 Do .Set R=Text .Quit:"\KTO11\"[(D_$P(Text,D,17)_D) .Set $P(Text,D,17)="KTO11",R=Text Else If $L(Text)!$L(BlockId) Set R="",$P(R,D,35)=D,$P(R,D,5)=Text,$P(R,D,17)="KTO11" If $L(R) Do .Set $P(R,D,18)=BlockId .Do INSERT(R,Insert,Line,Show) Set:K="-" Input="" Quit ; LINSERT(Type,Insert) New Y,X Set Insert=$G(Insert) Set:Insert="" Insert="E" If Type="" Do .Set Y(1)="Produktlijn",Y(2)="Tekstlijn" .Set Y="21\F\Selekteer lijntype",Y(0)=$O(Y(""),-1) .Do ^POP Set Type=$P("P\T",D,X) .Set FP=$P(UD,D,2)+1*100+1 Write @F,@F1 If Type="P" Set K="." Do PINSERT(Insert) If Type="T" Do NIEUW^FLOWTEXT(Q_UGL,$ZN,Insert) Quit ; ; Verwerk swap keys SWAP(Swap) Quit:'$D(Detail) If Swap="<" Do Quit .Quit:@DL(1)@(6)=1 .Do LSWAP(TLNr,Detail(@DL(1)@(6)),Detail(@DL(1)@(6)-1)) .Set DL(2)="UP" Do ML^PROC Kill DL(2) If Swap=">" Do Quit .Quit:@DL(1)@(6)=@DL(1)@(9) .Do LSWAP(TLNr,Detail(@DL(1)@(6)),Detail(@DL(1)@(6)+1)) .Set DL(2)="DO" Do ML^PROC Kill DL(2) Quit ; ; Swap toeleveringlijnen LSWAP(TLNr,FromNr,ToNr) New FromRec,ToRec,FPRNr,TPRNr,ORDNr,OLNr Quit:FromNr=ToNr If ToNr>^KTO(LEVNr,TLNr,0) Set ^KTO(LEVNr,TLNr,0)=ToNr+1 Set (FromRec,ToRec)="" If $D(^KTO(LEVNr,TLNr,FromNr)) Merge FromRec=^KTO(LEVNr,TLNr,FromNr) If $D(^KTO(LEVNr,TLNr,ToNr)) Merge ToRec=^KTO(LEVNr,TLNr,ToNr) Set FPRNr=$P(FromRec,D,2),TPRNr=$P(ToRec,D,2) If FPRNr!(TPRNr) Do KTO3SWAP(FromNr,ToNr),KTOKSWAP(FromNr,ToNr) Set ORDNr=$P(FromRec,D,27),OLNr=$P($P(FromRec,D,28),";") If ORDNr Do OSWAP(ORDNr,OLNr,ToNr) Set ORDNr=$P(ToRec,D,27),OLNr=$P($P(ToRec,D,28),";") If ORDNr Do OSWAP(ORDNr,OLNr,FromNr) Do:FPRNr KWNODE(LEVNr,TLNr,FromNr) Do:TPRNr KWNODE(LEVNr,TLNr,ToNr) Kill ^KTO(LEVNr,TLNr,FromNr),^KTO(LEVNr,TLNr,ToNr) If $L(FromRec) Do .Merge ^KTO(LEVNr,TLNr,ToNr)=FromRec .Do:FPRNr SWNODE(LEVNr,TLNr,ToNr) If $L(ToRec) Do .Merge ^KTO(LEVNr,TLNr,FromNr)=ToRec .Do:TPRNr SWNODE(LEVNr,TLNr,FromNr) Quit ; ; Swap link met order OSWAP(ORDNr,OLNr,ToNr) New R,KLNr Set KLNr=$P(^KO1(ORDNr,"F"),D),R=^KOD(KLNr,"F",ORDNr,OLNr) Set $P(R,D,28)=ToNr,^KOD(KLNr,"F",ORDNr,OLNr)=R Quit ; ; Swap AB-lijnnummers KTO3SWAP(FromNr,ToNr) New FromTemp,ToTemp Set FromTemp=$G(^KTO(LEVNr,TLNr,FromNr)),ToTemp=$G(^KTO(LEVNr,TLNr,ToNr)) If $P(FromTemp,D,2) Kill ^KTO3(TLNr,$P(FromTemp,D,13,14)_D_FromNr) If $P(ToTemp,D,2) Kill ^KTO3(TLNr,$P(ToTemp,D,13,14)_D_ToNr) Set ^KTO3(TLNr,$P(ToTemp,D,13,14)_D_FromNr)="" If $P(FromTemp,D,2) Set ^KTO3(TLNr,$P(FromTemp,D,13,14)_D_ToNr)="" Quit ; ; Swap komlevertermijnen KTOKSWAP(FromNr,ToNr) New FromTemp,ToTemp If $D(^KTOK(LEVNr,TLNr,FromNr)) set FromTemp=^KTOK(LEVNr,TLNr,FromNr) Kill ^KTOK(LEVNr,TLNr,FromNr) If $D(^KTOK(LEVNr,TLNr,ToNr)) set ToTemp=^KTOK(LEVNr,TLNr,ToNr) Kill ^KTOK(LEVNr,TLNr,ToNr) If $D(FromTemp) Set ^KTOK(LEVNr,TLNr,ToNr)=FromTemp If $D(ToTemp) Set ^KTOK(LEVNr,TLNr,FromNr)=ToTemp Quit ; ; Nieuw produkt voor een produktlijn NEWPROD New %TC,R,PRNr,OPRNr,NPRNr,KLNr,ORDNr,OLNr,Recalc Set TLLNr=Detail(@DL(1)@(6)),R=^KTO(LEVNr,TLNr,TLLNr),ORDNr=$P(R,D,27),OLNr=$P($P(R,D,28),";") If $$CHECKWMS^FLOW(TLNr,Detail(@DL(1)@(6)),,,,,1) Quit Set OPRNr=$P(R,D,2) Quit:'OPRNr ;Quit:'$$ASK^vhWACHTW("MANAGER","","",0) Set (PRNr,NPRNr)=$$SELECT^PRODUKT6("L",LEVNr) Quit:OPRNr=NPRNr!'NPRNr If $P(^KPR(NPRNr,0),D,23)="S" Do Quit .Set FP=2211 Write @F,@F1,@F,$P(^KPR(NPRNr,0),D) .Do TXTL^vhINP("FLOW","MOEDEROVERKIND") If $P(^KPR(NPRNr,1),D,25)=1 Do Quit .Set FP=2211 Write @F,@F1,@F,$P(^KPR(NPRNr,0),D) .Do TXTL^vhINP("FLOW","NIETAKTIEF") Set R=$$ASKL^vhINP("FLOW","NEWPROD") Quit:$L(R) Do ADD^vhLock("^KPR(OPRNr)") If '%TC Do LDISP^vhLock("^KPR(OPRNr)","Produkt "_$P(^KPR(OPRNr,0),D)) Quit Do ADD^vhLock("^KPR(NPRNr)") If '%TC Do LDISP^vhLock("^KPR(NPRNr)","Produkt "_$P(^KPR(NPRNr,0),D)) Quit Do KWNODE(LEVNr,TLNr,TLLNr) Set $P(^KTO(LEVNr,TLNr,TLLNr),D,2)=NPRNr Do SWNODE(LEVNr,TLNr,TLLNr) Do ProductToeleveringLijnGewijzigd^FLOWTOE2(LEVNr,TLNr,TLLNr,##class(DOM.AKP.enu.ProductToeleveringLijnWijzigingType).Product()) Set Recalc=0 ;$$ASKL^vhINP("FLOW","RECALC") If 'Recalc Do EL^PROC If Recalc Do LRECALC(LEVNr,TLNr,TLLNr,1) If ORDNr,OLNr Do .Set KLNr=$P(^KO1(ORDNr,"F"),D) .For Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit:%TC Do LDISP^vhLock("^KOD(KLNr,""F"",ORDNr)","Produkt "_ORDr) .Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) .Set $P(^KOD(KLNr,"F",ORDNr,OLNr),D,2)=NPRNr .Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) .Do ProductOrderLijnGewijzigd^FLOWORD2(KLNr,ORDNr,OLNr,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Product()) .Do InvoerUitvoerLinkAangemaakt^FLOWTOE2(LEVNr,TLNr,TLLNr) .;Do LRECALC^FLOWORD(KLNr,ORDNr,OLNr) .Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") Do REMOVE^vhLock("^KPR(OPRNr)") Do REMOVE^vhLock("^KPR(NPRNr)") Quit ; GWNODE(LEVNr,TLNr,TLLNr) New R,PRNr,Date,Index,Data If 'LEVNr Set LEVNr=$P(^KTO1(TLNr),D) Set R=^KTO(LEVNr,TLNr,1),Date=$P(R,D,2) Set Date=$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(Date),"DS"),D,"") Set R=^KTO(LEVNr,TLNr,TLLNr),PRNr=$P(R,D,2) Quit:'PRNr "" Set Index="W 0.0T"_Date_$J(TLNr,6)_$J(TLLNr-100,3),Data=$G(^KPR(PRNr,Index)) Quit PRNr_"`"_Index_"`"_Data ; KWNODE(LEVNr,TLNr,TLLNr) New R,Index,PRNr,Kom,Qty Set R=$$GWNODE(LEVNr,TLNr,TLLNr) Quit:R="" Set PRNr=$P(R,"`"),Index=$P(R,"`",2),Qty=$P($P(R,"`",3),D,4),Kom=$P($P(R,"`",3),D,7) Kill ^KPR(PRNr,Index) If $E($O(^KPR(PRNr,"W")))'="W" Kill ^KPR(PRNr,"W") ; Theoretische stock Set R=$P(^KPR(PRNr,0),D,17) Set $P(R,"#")=$P(R,"#")-Qty,$P(R,"#",Kom+2)=$P(R,"#",Kom+2)-Qty Set $P(^KPR(PRNr,0),D,17)=R Set R=^KTO(LEVNr,TLNr,TLLNr) Kill ^KTO3(TLNr,$P(R,D,13,14)_D_TLLNr) Do DELTO^FLOWTOE3(LEVNr,TLNr,TLLNr) Quit ; BSSWNODE(LEVNr,TLNr,TLLNr) New R,Date,Index,Data,PRNr,LevWk,Kom,Qty,ToeRef Set R=$$GWNODE(LEVNr,TLNr,TLLNr) Quit:R="" Set PRNr=$P(R,"`"),Index=$P(R,"`",2),Data=$P(R,"`",3) Quit:'PRNr Set Qty=$P(Data,D,4) Set R=^KTO(LEVNr,TLNr,1),Date=$P(R,D,2),ToeRef=$P(R,D,3) Set R=^KTO(LEVNr,TLNr,TLLNr) Set:'Qty Qty=$P(R,D,3) Set Data=Date_D_LEVNr_D_ToeRef_D_Qty_D_$P(R,D,3)_D_$P(R,D,25)_D_($P(R,D,27)'="") Do ##class(vhLib.Logger).%New().Debug("Setting WNODE BS TOE","SET WNODE BS TOE " _LEVNr _" " _TLNr _" " _TLLNr _" - Index " _Index _" - PRNr " _PRNr _" - Data " _Data) Set ^KPR(PRNr,Index)=Data,^KPR(PRNr,"W")="" ; Theoretische stock Set Qty=$P(R,D,3),Kom=($P(R,D,27)'="") Set R=$P(^KPR(PRNr,0),D,17) Do ##class(vhLib.Logger).%New().Debug("Setting WNODE BS TOE","SET WNODE BS TOE " _LEVNr _" " _TLNr _" " _TLLNr_" Theoretische stock - " _R) Set $P(R,"#")=$P(R,"#")+Qty,$P(R,"#",Kom+2)=$P(R,"#",Kom+2)+Qty Do ##class(vhLib.Logger).%New().Debug("Setting WNODE BS TOE","SET WNODE BS TOE " _LEVNr _" " _TLNr _" " _TLLNr_" Theoretische stock - " _R) Set $P(^KPR(PRNr,0),D,17)=R Set R=^KTO(LEVNr,TLNr,TLLNr) Set ^KTO3(TLNr,$P(R,D,13,14)_D_TLLNr)="" Do BUILDTO^FLOWTOE3(LEVNr,TLNr,TLLNr) Quit ; SWNODE(LEVNr,TLNr,TLLNr) New R,Date,Index,Data,PRNr,LevWk,Kom,Qty,ToeRef Set R=$$GWNODE(LEVNr,TLNr,TLLNr) Quit:R="" Set PRNr=$P(R,"`"),Index=$P(R,"`",2),Data=$P(R,"`",3) Quit:'PRNr Set Qty=$P(Data,D,4) Set R=^KTO(LEVNr,TLNr,1),Date=$P(R,D,2),ToeRef=$P(R,D,3) Set R=^KTO(LEVNr,TLNr,TLLNr) Set:'Qty Qty=$P(R,D,3) Set Data=Date_D_LEVNr_D_ToeRef_D_Qty_D_$P(R,D,3)_D_$P(R,D,25)_D_($P(R,D,27)'="") Do ##class(vhLib.Logger).%New().Debug("Setting WNODE BS TOE","SET WNODE BS TOE " _LEVNr _" " _TLNr _" " _TLLNr _" - Index " _Index _" - PRNr " _PRNr _" - Data " _Data) Set ^KPR(PRNr,Index)=Data,^KPR(PRNr,"W")="" ; Theoretische stock Set Qty=$P(R,D,3),Kom=($P(R,D,27)'="") Set R=$P(^KPR(PRNr,0),D,17) Do ##class(vhLib.Logger).%New().Debug("Setting WNODE TOE","SET WNODE TOE " _LEVNr _" " _TLNr _" " _TLLNr_" Theoretische stock - " _R) Set $P(R,"#")=$P(R,"#")+Qty,$P(R,"#",Kom+2)=$P(R,"#",Kom+2)+Qty Do ##class(vhLib.Logger).%New().Debug("Setting WNODE TOE","SET WNODE TOE " _LEVNr _" " _TLNr _" " _TLLNr_" Theoretische stock - " _R) Set $P(^KPR(PRNr,0),D,17)=R ; Stock reservatie Set R = $P(^KPR(PRNr,2),D,9) Do ##class(vhLib.Logger).%New().Debug("Setting WNODE TOE","SET WNODE TOE " _LEVNr _" " _TLNr _" " _TLLNr_" Stock reservatie - " _R) Set $P(R,"#",3)=$P(R,"#",3)+$P(R,"#",2) Set $P(R,"#",2)=0 Do ##class(vhLib.Logger).%New().Debug("Setting WNODE TOE","SET WNODE TOE " _LEVNr _" " _TLNr _" " _TLLNr_" Stock reservatie - " _R) Set $P(^KPR(PRNr,2),D,9)=R Set R=^KTO(LEVNr,TLNr,TLLNr) Set ^KTO3(TLNr,$P(R,D,13,14)_D_TLLNr)="" Do BUILDTO^FLOWTOE3(LEVNr,TLNr,TLLNr) Quit ; MODBEST(LEVNr,TOENr,TLNr,Negatief) New R,PRNr,Aantal,Type,ORDNr Set Negatief=$G(Negatief),R=^KTO(LEVNr,TOENr,TLNr),PRNr=$P(R,D,2) If PRNr Do .Set Aantal=$P(R,D,3) Set:Negatief Aantal=-Aantal .Set ORDNr=$P(R,D,27),Type=$S(ORDNr:"K",1:"S") .Do MODBEST^PRODUKT4(PRNr,Type,Aantal) Quit ; ; Herreken een lijn LRECALC(LEVNr,TLNr,TLLNr,Display,TRecalc) New K,R,P,Rec,BrutoPr,PRNr,Aantal,Prijs,Korting1,Korting2,Netto,Bruto,EenhNum,EenhChar,ToeMunt,LijnMunt,PrMunt Set Display=$G(Display),TRecalc=$G(TRecalc) Set R=^KTO(LEVNr,TLNr,1),BrutoPr=1,ToeMunt=$P(R,D,18) Set Rec=^KTO(LEVNr,TLNr,TLLNr),PRNr=$P(Rec,D,2) Quit:'PRNr Quit:$P(Rec,D,26)="*" Quit:$P(Rec,D,26)="=" Set Aantal=$P(Rec,D,3) Set R=$$LEVPR^KPRIJS(LEVNr,PRNr) Set Prijs=$J($P(R,D),0,2),PrMunt=$P(R,D,2) If ToeMunt'=PrMunt,'TRecalc Do Quit .Set R=$$TXTPOP^FLOW("TRECALC","","ToeMunt","PrMunt") Set EenhChar=$P(R,D,3),Korting1=$P(R,D,5),Korting2=$P(R,D,6),EenhNum=$P(R,D,11) Set Netto=$J(Aantal/EenhNum*Prijs,0,2) If BrutoPr Set Prijs=$J($P(R,D,4),0,2),Netto=$J(Prijs*(100-Korting1)/100*(100-Korting2)/100*Aantal/EenhNum,0,2) Set Bruto=$J(Aantal/EenhNum*Prijs,0,2),K=Korting1_"#"_Korting2 Set $P(Rec,D,6)=Prijs,$P(Rec,D,7)=K,$P(Rec,D,9)=Netto,$P(Rec,D,10)=Netto,$P(Rec,D,16)=Bruto,$P(Rec,D,21)=EenhChar Set ($P(Rec,D,22),LijnMunt)=PrMunt Set ^KTO(LEVNr,TLNr,TLLNr)=Rec If ToeMunt'=LijnMunt Set R=^KTO(LEVNr,TLNr,1),$P(R,D,18)=LijnMunt,^KTO(LEVNr,TLNr,1)=R If Display Do EL^PROC Quit ; RECALC(TLNr,Display) New %TC,R,TLLNr,LEVNr,LevMunt Quit:'$D(^KTO1(TLNr)) Set R=^KTO1(TLNr) Quit:$L($P(R,D,2)) Set Display=$G(Display),LEVNr=$P(R,D),TLLNr=100 Do INITLEV Do ADD^vhLock("^KTO(LEVNr,TLNr)") If '%TC Do LDISP^vhLock("^KTO(LEVNr,TLNr)","Toelevering "_TLNr) Quit If Display Set DL(2)="HO" Do ML^PROC Kill DL(2) For Set TLLNr=$O(^KTO(LEVNr,TLNr,TLLNr)) Quit:TLLNr="" Do .Set R=^KTO(LEVNr,TLNr,TLLNr) .If $P(R,D,2),$P(R,D,26)'="*",$P(R,D,26)'="=" Do LRECALC(LEVNr,TLNr,TLLNr,$G(Display),1) .If Display Set DL(2)="DO" Do ML^PROC Kill DL(2) Do REMOVE^vhLock("^KTO(LEVNr,TLNr)") Quit ; KILLKOML New %TC,R,TLLNr,PRNr,KLNr,ORDNr,OLNr,Aantal,FysStock,ResStock,PraStock,Taal Set TLLNr=Detail(AD(6)),R=^KTO(LEVNr,TLNr,TLLNr),PRNr=$P(R,D,2),ORDNr=$P(R,D,27),OLNr=$P($P(R,D,28),";") Quit:'PRNr!'ORDNr Quit:'$D(^KO1(ORDNr,"F")) Set KLNr=$P(^KO1(ORDNr,"F"),D),R=^KKL(^KK1(KLNr),0),Taal=$P(R,D,9) Set:Taal="" Taal="N" Set R=^KOD(KLNr,"F",ORDNr,OLNr),Aantal=$P(R,D,3) Set R=^KPR(PRNr,0),FysStock=$P(R,D,14),R=^KPR(PRNr,2),ResStock=$P(R,D,9),PraStock=FysStock-ResStock+Aantal If Aantal'>PraStock Set R=$$^vhTXTPOP("FLOWTOER","KILLKOML") If Aantal>PraStock Do .Set FysStock=$$EXTNUM^vhLib.DataTypes(FysStock,8,"T.",0) .Set PraStock=$$EXTNUM^vhLib.DataTypes(PraStock,8,"T.",0) .Set R=$$^vhTXTPOP("FLOWTOER","KOMSTOCK","",FysStock,PraStock,$$EXTNUM^vhLib.DataTypes(Aantal,8,"T.",0)) 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) Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),$P(Rec,D,27,28)=D,^KOD(KLNr,"F",ORDNr,OLNr)=Rec Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) Do EL^PROC Kill ^KTOK(LEVNr,TLNr,TLLNr) Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") Do REMOVE^vhLock("^KPR(PRNr)") Quit ; INIT Set TLNr=TR,LEVNr=LC,EwmsLink=$G(EwmsLink,1) Set (USC,TSC)=$G(USC),USM=$G(TSM) Do INITLEV Do INIT^PROC("FLOWTOEADP","AD") Set AD(2,1)=^LD("L","FLOWTOEADM") Set AD(2,2)=^LD("L","FLOWTOEADR") Set AD(2,3)=^LD("L","FLOWTOEADT") Set FP=UD*100+1 Write @F,@F1 Do FETCHDET^FLOWTOE,WL^PROC Set Input="",Help=1 If $O(^KTO(LEVNr,TLNr,100))="" Set Input=".",Help=0 Quit ; INITLEV New sFL Do FETCHLEV^UTILI(LEVNr,"sFL") Set LevMunt=$P(sFL(0),D,11) Quit ; ; Event bij aanmaken van een toeleveringslijn ProductToeleveringLijnGemaakt(LeverancierNummer,ToeleveringID,ToeleveringLijnID) New Rec,ProductID,ToeleveringLijnCode Set Rec=^KTO(LeverancierNummer,ToeleveringID,ToeleveringLijnID) Set ProductID=$P(Rec,D,2) Set ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierNummer,ToeleveringID,ToeleveringLijnID) If ProductID{ New LeverancierID,ProductToeleveringLijnEventData,ProductToeleveringLijnGemaaktEvent #dim LeverancierID As DOM.common.PartijID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefLeverancierPartijID(LeverancierNummer) Set ProductToeleveringLijnEventData = ##class(DOM.AKP.event.ProductToelevLijnEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID, LeverancierID) Set ProductToeleveringLijnGemaaktEvent = ##class(DOM.AKP.event.ProductToelevLijnGemaakt).%New(ProductToeleveringLijnEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(ProductToeleveringLijnGemaaktEvent) } Quit ; ; Event bij verwijderen van een toeleveringslijn ProductToeleveringLijnAnnulatie(LeverancierNummer,ToeleveringID,ToeleveringLijnID) New Rec,ProductID,ToeleveringLijnCode Set Rec=^KTO(LeverancierNummer,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierNummer,ToeleveringID,ToeleveringLijnID) If ProductID{ New LeverancierID,ProductToeleveringLijnEventData,ProductToeleveringLijnAnnulatie #dim LeverancierID As DOM.common.PartijID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefLeverancierPartijID(LeverancierNummer) Set ProductToeleveringLijnEventData = ##class(DOM.AKP.event.ProductToelevLijnEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID, LeverancierID) Set ProductToeleveringLijnAnnulatie = ##class(DOM.AKP.event.ProductToelevLijnAnnulatie).%New(ProductToeleveringLijnEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(ProductToeleveringLijnAnnulatie) } Quit ; ; Event bij wijzigen van een toeleveringslijn ProductToeleveringLijnGewijzigd(LeverancierNummer,ToeleveringID,ToeleveringLijnID,WijzigingType) New WijzigingTypes Set WijzigingTypes = ##class(DOM.AKP.impl.ProductToelevLijnWijzigingTypes).%New() Do WijzigingTypes.Insert(WijzigingType) Do ProductToeleveringLijnWijzigingen(LeverancierNummer, ToeleveringID, ToeleveringLijnID, WijzigingTypes) Quit ProductToeleveringLijnWijzigingen(LeverancierNummer,ToeleveringID,ToeleveringLijnID,WijzigingTypes) New Rec,ProductID,ToeleveringLijnCode,ProductToeleveringLijnWijzigEventData,ProductToeleveringLijnGewijzigd Set Rec=^KTO(LeverancierNummer,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierNummer,ToeleveringID,ToeleveringLijnID) If ProductID{ #dim LeverancierID As DOM.common.PartijID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefLeverancierPartijID(LeverancierNummer) Set ProductToeleveringLijnWijzigEventData = ##class(DOM.AKP.event.ProductToelevLijnWijzigEventData).%New(ToeleveringID, ToeleveringLijnCode, ProductID, LeverancierID, WijzigingTypes) Set ProductToeleveringLijnGewijzigd = ##class(DOM.AKP.event.ProductToelevLijnGewijzigd).%New(ProductToeleveringLijnWijzigEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(ProductToeleveringLijnGewijzigd) } Quit ; ; Event bij het aanmaken van een KOM-link InvoerUitvoerLinkAangemaakt(LeverancierNummer,ToeleveringID,ToeleveringLijnID) New Rec,ProductID,ToeleveringLijnCode,InvoerUitvoerLinkEventData,InvoerUitvoerLinkAangemaaktEvent,KlantID,OrderID,OrderLijnID,OrderLijnCode Set Rec=^KTO(LeverancierNummer,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierNummer,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 InvoerUitvoerLinkAangemaaktEvent = ##class(DOM.ProdRes.event.InvoerUitvoerLinkAangemaaktEvent).%New(InvoerUitvoerLinkEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(InvoerUitvoerLinkAangemaaktEvent) } Quit ; ; Event bij het verbreken van een KOM-link InvoerUitvoerLinkVerbroken(LeverancierNummer,ToeleveringID,ToeleveringLijnID) New Rec,ProductID,ToeleveringLijnCode,InvoerUitvoerLinkEventData,InvoerUitvoerLinkVerbrokenEvent,KlantID,OrderID,OrderLijnID,OrderLijnCode Set Rec=^KTO(LeverancierNummer,ToeleveringID,ToeleveringLijnID),ProductID=$P(Rec,D,2),ToeleveringLijnCode=$$GeefToeleveringLijnCode^FLOWTOE(LeverancierNummer,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.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(InvoerUitvoerLinkVerbrokenEvent) } Quit ;