FLOWORD2 ;Order [ 09/18/2003 2:25 PM ] ; ; Insert van een lijn INSERT(Rec,Insert,OLNr,Show) ;Insert B=Before, A=After, E=End, R=Replace New R,PRNr,TLNr,TLLNr,LEVNr,FromNr,ToNr,VerwType Set R=^KOD(KLNr,"F",ORDNr,1),VerwType=$P(R,D,29) For I=1:1:$L(VerwType) If $P(Rec,D,14)'[$E(VerwType,I) Set $P(Rec,D,14)=$P(Rec,D,14)_$E(VerwType,I) Set $P(Rec,D,15)=$$UNIEKLNR^FLOWORD(KLNr,ORDNr),PRNr=$P(Rec,D,2) Set:PRNr $P(Rec,D,46)=$$RecentGekocht^STAT(KLNr,PRNr) Set OLNr=$G(OLNr),Show=$G(Show) If '$D(Detail),Show Set Insert="E" If $D(Detail),@DL(1)@(6)=$O(Detail(""),-1),Insert="A" Do .If OLNr,OLNr'=Detail(@DL(1)@(6)) .Else Set Insert="E" If Insert="R" Do Quit .If 'OLNr Set OLNr=Detail(@DL(1)@(6)) .Do KWNODE(KLNr,ORDNr,OLNr) .Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec .If $L($G(FBRef)),$P(Rec,D,2) Set $P(@FBRef@($P(Rec,D,2)),D,2)=ORDNr .Do SWNODE(KLNr,ORDNr,OLNr) .Do LRECALC(KLNr,ORDNr,OLNr,Show) Quit:'Show .Do EL^PROC Quit If Insert="A" Do .If 'OLNr Set OLNr=100 If $D(Detail) Set OLNr=Detail(@DL(1)@(6)),@DL(1)@(6)=@DL(1)@(6)+1 .Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)),Insert=$S('OLNr:"E",1:"B") If Insert="B" Do Quit .If 'OLNr Set OLNr=Detail(@DL(1)@(6)) .Set FromNr=^KOD(KLNr,"F",ORDNr,0),^KOD(KLNr,"F",ORDNr,0)=FromNr+1 .Set ^KOD(KLNr,"F",ORDNr,FromNr)=Rec,ToNr=FromNr .If $L($G(FBRef)),$P(Rec,D,2) Set $P(@FBRef@($P(Rec,D,2)),D,2)=ORDNr .Do SWNODE(KLNr,ORDNr,FromNr) .Do LRECALC(KLNr,ORDNr,FromNr,Show) .Do ProductOrderLijnGemaakt(KLNr,ORDNr,FromNr) .For Set FromNr=$O(^KOD(KLNr,"F",ORDNr,FromNr),-1) Do Quit:FromNr=OLNr ..Do LSWAP(ORDNr,FromNr,ToNr,1) ..Set ToNr=FromNr .If Show Do FETCHDET^FLOWORD,WL^PROC If Insert="E" Do Quit .Set OLNr=^KOD(KLNr,"F",ORDNr,0),^KOD(KLNr,"F",ORDNr,0)=OLNr+1,^KOD(KLNr,"F",ORDNr,OLNr)=Rec .If $L($G(FBRef)),$P(Rec,D,2) Set $P(@FBRef@($P(Rec,D,2)),D,2)=ORDNr .Do SWNODE(KLNr,ORDNr,OLNr) .Do LRECALC(KLNr,ORDNr,OLNr,Show) .Do ProductOrderLijnGemaakt(KLNr,ORDNr,OLNr) .If $D(UL),$D(UD),UL'>$P(UD,D,2) Set UL=UL+1 .If Show Do NIEUWV^PROC3(OLNr) Quit ; ; Insert produkt ; LDefault doorgegeven als .Local(Piece)=Value PINSERT(Insert,Line,PRNr,Aantal,Prijs,Korting1,Korting2,LevTerm,Show,StkCorr,NoRecalc,Kost,NoChkPrs,LDefault) New B,R,OrdTyp,CumContr,Piece Set CumContr=$$CHKALG^DEFAULTS(KLNr,"FLOWORD","CONTRACT","AFNAME","CUMUL") Set UZ=^KOD(KLNr,"F",ORDNr,0)-100 Set:$G(Insert)="" Insert="E" Set Line=$G(Line),Show=$G(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 StkCorr=$G(StkCorr,"?"),NoRecalc=$G(NoRecalc) Set:NoRecalc NoRecalc="=" Set Kost=$G(Kost,"?"),NoChkPrs=$G(NoChkPrs) Set K=$S(PRNr:PRNr,1:".") Do SCROL^KF0(Aantal,Prijs,Korting1,Korting2,LevTerm,NoRecalc,NoChkPrs) Set R="" If K'="-",$O(B(100))'="" For I=1:1:35 Set R=R_$G(B(I+100))_D If $L(R) Do .If Show,AD(13)'="FLOWORDADP" Do DETAIL(1) .If StkCorr="?",$P(R,D,3)<0 Set StkCorr=$$MODSTOCK(R) Quit:StkCorr="-" .Set OrdTyp=$P(^KOD(KLNr,"F",ORDNr,1),D,25) .If OrdTyp="Y",$P(R,D,14)'["Z" Set StkCorr="Z" .Set $P(R,D,14)=$P(R,D,14)_$S(StkCorr="?":"",1:StkCorr) .Set Piece="" .For Set Piece=$O(LDefault(Piece)) Quit:'Piece Set $P(R,D,Piece)=LDefault(Piece) .Do INSERT(R,Insert,Line,Show),PRCOUNT^FLOW("+","KOD",Show),KOSTEN(R,"H",Kost,Insert,Line,Show) .If $G(IsProj),Show Do PROJREF Do:$D(ContrLns) .New Contract,PRNr,Aantal,Prijs .For Set Contract=$P($G(ContrLns),U,2) Quit:Contract="" Do ..If $P(Contract,D,4)="TST",'$P(Contract,D,3) Do Quit:'$D(ContrLns) ...Set $P(ContrLns,U,1,2)=$P(ContrLns,U) ...If $O(ContrLns(""))="",$P(ContrLns,U,2)="" Kill ContrLns,NoChkVp Quit ...Set Prijs="" ...For Set Prijs=$O(ContrLns("")) Quit:Prijs="" Do ....Set Aantal=ContrLns(Prijs),$P(Contract,D,3)=Aantal,$P(Contract,D,6)=Prijs ....Set ContrLns=ContrLns_U_Contract ....Kill ContrLns(Prijs) ...Set Contract=$P($G(ContrLns),U,2) ..Set PRNr=$P(ContrLns,U),Aantal=$S($P(Contract,D,4)="TST":$P(Contract,D,3),1:""),Prijs=$P(Contract,D,6) ..Do PINSERT("","",PRNr,Aantal,Prijs,"","",$S($P(Contract,D,4)="TST":$P(Contract,D,5),1:LevTerm),,,1) Set:K="-" Input="" Quit ; ; Insert tekst TINSERT(Insert,Line,Text,Show,BlockId,AfdrFakt) New B,R Set UZ=^KOD(KLNr,"F",ORDNr,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 .If $P($P(R,D,17),"#")="KF1925" Do CALCTOT^FLOW($P(Text,D,9),$P(Text,D,22),1) .Quit:"\KF11\KF1925\KF5\"[(D_$P($P(R,D,17),"#")_D) .Set R=$P(Text,D,17),$P(R,"#")="KF11",$P(Text,D,17)=R,R=Text Else If $L(Text)!$L(BlockId) Set R="",$P(R,D,35)=D,$P(R,D,5)=Text,$P(R,D,17)="KF11#"_$G(AfdrFakt) Else Do .Do SCROL^KF11() .Set R="" If K'="-",$O(B(100))'="" For I=1:1:35 Set R=R_$G(B(I+100))_D If $L(R) Do .If $P($P(R,D,17),"#")="KF11" Do ..Set:'BlockId BlockId=$P(R,D,18) ..Set:'$P(BlockId,";") $P(BlockId,";")=$P($H,";",2) ..Set:$P(BlockId,";",2,4)="" BlockId=$P(BlockId,";")_";T;;O" ..If $P($P(R,D,17),"#",2) Set:$P(BlockId,";",4)'["B" BlockId=BlockId_"B" Set:$P(BlockId,";",4)'["F" BlockId=BlockId_"F" .Set $P(R,D,18)=BlockId .Do INSERT(R,Insert,Line,Show) Set:$G(K)="-" Input="" Quit ; ; Insert manuele lijn MINSERT(Insert,Line,Text,Show) New B,R Set UZ=^KOD(KLNr,"F",ORDNr,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 Text=$G(Text) If $L(Text,D)>1 Do .Set R=Text .If $P($P(R,D,17),"#")="KF1925" Do CALCTOT^FLOW($P(Text,D,9),$P(Text,D,22),1) Else Do .Set K=$$NIEUW^FLOWMANL("KOD",KLNr,ORDNr) .;Do ^KF1925 .Set R="" If K'="-",$O(B(100))'="" For I=1:1:35 Set R=R_$G(B(I+100))_D .If $P($P(R,D,17),"#")="KF1925" Do CALCTOT^FLOW($P(R,D,9),$P(R,D,22),1) If $L(R) Do INSERT(R,Insert,Line,Show) Set:K="-" Input="" Quit ; ; Selekteer insert module LINSERT(Type,Insert) New Y,X Set Insert=$G(Insert) Set:Insert="" Insert="E" If Type="" Do .Set Y(1)="Produktlijn",Y(2)="Tekstlijn" .If $G(CashECar) Set Y(3)="Manuele lijn" .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) If Type="M" Do MINSERT(Insert) Quit ; ; Verwerk swap keys SWAP(Swap) New I,SwapRec,Refresh,Quit,FOLNr,TOLNr,OLRec,PRNr,BlockId,FromRef,ToRef,FromNr,ToNr Quit:'$D(Detail) Set FromRef=@DL(1)@(6) Set SwapRec=^KOD(KLNr,"F",ORDNr,Detail(FromRef)),Refresh=0 If Swap="<" Do .Quit:FromRef=1 .Set ToRef=FromRef-1 .Set OLRec=^KOD(KLNr,"F",ORDNr,Detail(FromRef)),BlockId=$P(OLRec,D,18) .If $P(BlockId,";",2)="P" Do ..Set Quit=0 ..For I=FromRef:-1 Quit:'$D(Detail(I)) Do Quit:Quit ...Set OLRec=^KOD(KLNr,"F",ORDNr,Detail(I)) ...Set:$P(OLRec,D,18)'=BlockId Quit=1 ..If $P(OLRec,D,2),$P(OLRec,D,15)=$P(BlockId,";",3) Do ...Set FromRef=$S($D(Detail(I)):I,I>1:I-1,1:1) ...Set ToRef=$S(FromRef>1:FromRef-1,1:1) .Set FromNr=Detail(FromRef) Set ToNr=Detail(ToRef) .Do LSWAP(ORDNr,FromNr,ToNr) .Set Refresh=1 .Set @DL(1)@(6)=FromRef If Swap=">" Do .Quit:FromRef=@DL(1)@(9) .Set ToRef=FromRef+1 .Set OLRec=^KOD(KLNr,"F",ORDNr,Detail(FromRef)),BlockId=$P(OLRec,D,18) .If $P(BlockId,";",2)'="P" Do ..Set ToRef=FromRef+1 ..If '$D(Detail(ToRef+1)) Set ToRef=FromRef Quit ..Set OLRec=^KOD(KLNr,"F",ORDNr,Detail(ToRef)),BlockId=$P(OLRec,D,18) ..Set:$P(BlockId,";",2)="P" FromRef=ToRef .If $P(BlockId,";",2)="P" Do ..Set Quit=0 ..For I=FromRef:1 Quit:'$D(Detail(I)) Do Quit:Quit ...Set OLRec=^KOD(KLNr,"F",ORDNr,Detail(I)) ...Set:$P(OLRec,D,18)'=BlockId Quit=1 ..If '$D(Detail(I)) Set (FromRef,ToRef)=I-1 ..Else Set ToRef=I,FromRef=I-1 .Set FromNr=Detail(FromRef) Set ToNr=Detail(ToRef) .Do LSWAP(ORDNr,FromNr,ToNr) .Set Refresh=1 .Set @DL(1)@(6)=FromRef If Refresh Do .Set Quit=0 .For I=1:1 Quit:'$D(Detail(I)) Do Quit:Quit ..Set:^KOD(KLNr,"F",ORDNr,Detail(I))=SwapRec @DL(1)@(6)=I,Quit=1 .Set:@DL(1)@(6)<@DL(1)@(7) @DL(1)@(7)=@DL(1)@(6) .Set:@DL(1)@(7)<(@DL(1)@(6)-@DL(1)@(4)+1) @DL(1)@(7)=@DL(1)@(6)-@DL(1)@(4)+1 .Do WL^PROC Quit ; ; Swap orderlijnen LSWAP(ORDNr,FromNr,ToNr,OneLine) New R,FromRec,ToRec,FPRNr,TPRNr,TLNr,TLLNr,FPrText,TPrText,OLNr,BlockId,OLUNr Quit:FromNr=ToNr Set OneLine=$G(OneLine) If ToNr>^KOD(KLNr,"F",ORDNr,0) Set ^KOD(KLNr,"F",ORDNr,0)=ToNr+1 If ToNr>FromNr Set R=ToNr,ToNr=FromNr,FromNr=R Set (FromRec,ToRec,FPrText,TPrText)="" If $D(^KOD(KLNr,"F",ORDNr,FromNr)) Do .Merge FromRec=^KOD(KLNr,"F",ORDNr,FromNr) .Quit:OneLine .Set BlockId=$P(FromRec,D,18),OLUNr=$P(BlockId,";",3),OLNr=FromNr .If $P(BlockId,";",2)="P" Do ..Set Quit=0 ..For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr),-1) Quit:OLNr<100 Do Quit:Quit ...Set R=^KOD(KLNr,"F",ORDNr,OLNr) ...If $P(R,D,18)'=BlockId,$P(R,D,15)'=OLUNr Set Quit=1 Quit ...Kill FromRec ...Set FromNr=OLNr ...Merge FromRec=^KOD(KLNr,"F",ORDNr,FromNr) ...Set:$P(R,D,18)'=BlockId Quit=1 If $D(^KOD(KLNr,"F",ORDNr,ToNr)) Do .Merge ToRec=^KOD(KLNr,"F",ORDNr,ToNr) .Quit:OneLine .Set BlockId=$P(ToRec,D,18),OLUNr=$P(BlockId,";",3),OLNr=ToNr .Set Quit=0 .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:Quit ..Set R=^KOD(KLNr,"F",ORDNr,OLNr) ..If BlockId="",$P($P(R,D,18),";",2)="P" Set BlockId=$P(R,D,18) ..If $P(R,D,18)="" Set Quit=1 Quit ..If $P(R,D,18)'=BlockId Set Quit=1 Quit ..Kill ToRec ..Set ToNr=OLNr ..Merge ToRec=^KOD(KLNr,"F",ORDNr,ToNr) Set FPRNr=$P(FromRec,D,2),TPRNr=$P(ToRec,D,2) Do:FPRNr!TPRNr .;Quit:OneLine .Set FPrText=$$PRTEXT(KLNr,ORDNr,FromNr) .Set TPrText=$$PRTEXT(KLNr,ORDNr,ToNr,-1) Set TLNr=$P(FromRec,D,27),TLLNr=$P($P(FromRec,D,28),";") If TLNr Do TSWAP(TLNr,TLLNr,ToNr) Set TLNr=$P(ToRec,D,27),TLLNr=$P($P(ToRec,D,28),";") If TLNr Do TSWAP(TLNr,TLLNr,FromNr) Do:FPRNr KWNODE(KLNr,ORDNr,FromNr) Do:TPRNr KWNODE(KLNr,ORDNr,ToNr) Kill ^KOD(KLNr,"F",ORDNr,FromNr),^KOD(KLNr,"F",ORDNr,ToNr) If $L(FromRec) Do .Merge ^KOD(KLNr,"F",ORDNr,ToNr)=FromRec .Do:FPRNr SWNODE(KLNr,ORDNr,ToNr) If $L(ToRec) Do .Merge ^KOD(KLNr,"F",ORDNr,FromNr)=ToRec .Do:TPRNr SWNODE(KLNr,ORDNr,FromNr) If $L(FromRec),FPRNr Do .Quit:FPrText="" .For OLNr=$P(FPrText,D):1:$P(FPrText,D,2) Do LSWAP(ORDNr,OLNr-1,OLNr,1) If $L(ToRec) Do .Quit:TPrText="" .Set OLNr=$P(TPrText,D) .Do LSWAP(ORDNr,OLNr,OLNr-1,1) Quit Quit ; ; Nazicht tekstblok produkten PRTEXT(KLNr,ORDNr,OLNr,Dir) New R,FOLNr,TOLNr,PRNr,BlockId,OLUNr,TxtBlock Set Dir=$G(Dir,"+1"),(FOLNr,TOLNr,TxtBlock)="" Set R=$G(^KOD(KLNr,"F",ORDNr,OLNr)) If Dir<0 Do .Set BlockId=$P(R,D,18) .Quit:$P(BlockId,";",2)'="P" .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr),-1) Quit:OLNr<100 Do Quit:PRNr ..Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) .Set TxtBlock=$$PRTEXT(KLNr,ORDNr,OLNr) Set:$L(TxtBlock) TxtBlock=$P(TxtBlock,D,2)_D_$P(TxtBlock,D) Set PRNr=$P(R,D,2),OLUNr=$P(R,D,15) Else Do .If PRNr Do ..Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) ..Quit:OLNr="" ..Set R=^KOD(KLNr,"F",ORDNr,OLNr),BlockId=$P(R,D,18) ..Quit:$P(BlockId,";",2)'="P" Quit:$P(BlockId,";",3)'=OLUNr ..Set FOLNr=OLNr ..For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:BlockId'=$P(R,D,18) ...Set R=^KOD(KLNr,"F",ORDNr,OLNr) Set:$P(R,D,18)=BlockId TOLNr=OLNr ..Set TxtBlock=FOLNr_D_TOLNr If $L(TxtBlock) Do .Set:'$P(TxtBlock,D) $P(TxtBlock,D)=$P(TxtBlock,D,2) .Set:'$P(TxtBlock,D,2) $P(TxtBlock,D,2)=$P(TxtBlock,D) Quit TxtBlock ; ; Swap link met toelevering TSWAP(TLNr,TLLNr,ToNr) New R,LEVNr Set LEVNr=$P(^KTO1(TLNr),D),R=^KTO(LEVNr,TLNr,TLLNr) Set $P(R,D,28)=ToNr,^KTO(LEVNr,TLNr,TLLNr)=R If $D(^KTOK(LEVNr,TLNr,TLLNr)) Set R=^KTOK(LEVNr,TLNr,TLLNr),$P(R,D,5)=ToNr,^KTOK(LEVNr,TLNr,TLLNr)=R Quit ; ; Nieuw produkt voor een produktlijn NEWPROD New %TC,R,PRNr,OPRNr,NPRNr,LEVNr,Recalc,OLUNr,TOENr Set OLNr=$G(Detail(@DL(1)@(6))) Quit:'OLNr Set R=^KOD(KLNr,"F",ORDNr,OLNr),OPRNr=$P(R,D,2),OLUNr=$P(R,D,15),TOENr=$P(R,D,27) If $$CHECKWMS^FLOW(,,ORDNr,Detail(@DL(1)@(6)),,,1) Quit Quit:'OPRNr Quit:$L($P(R,D,40)) ;Quit:'$$ASK^vhWACHTW("MANAGER","","",0) Set R=$O(^KPR(OPRNr,"J")) Quit:$E(R)'="J" Set LEVNr=$P(^KPR(OPRNr,R),D) Set NPRNr=$$SELECT^PRODUKT6("L",LEVNr) Quit:OPRNr=NPRNr!'NPRNr Quit:'$$IsCommAkt^PRODUKT2(NPRNr,KLNr,1) 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(KLNr,ORDNr,OLNr) Set $P(^KOD(KLNr,"F",ORDNr,OLNr),D,2)=NPRNr Do SWNODE(KLNr,ORDNr,OLNr) Do ProductOrderLijnGewijzigd^FLOWORD2(KLNr,ORDNr,OLNr,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Product()) Set Recalc=0 ;$$ASKL^vhINP("FLOW","RECALC") If 'Recalc Do EL^PROC If Recalc Do LRECALC(KLNr,ORDNr,OLNr,1) Do REMOVE^vhLock("^KPR(OPRNr)") Do REMOVE^vhLock("^KPR(NPRNr)") Do:$$IsActiefOrder^HADOPV(ORDNr,OLUNr) ModOrderMailToHalux^FLOWORD3("MP",KLNr,ORDNr,TOENr,OPRNr,NPRNr) Quit ; GWNODE(KLNr,ORDNr,OLNr) New R,PRNr,Date,Index,Data If 'KLNr Set KLNr=$P(^KO1(ORDNr,"F"),D) Set R=^KOD(KLNr,"F",ORDNr,1),Date=$P(R,D,2) Set Date=$TR($$EXTDATE^vhDTyp($$INTDATE^vhDTyp(Date),"DS"),D,"") Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) Quit:'PRNr "" Set Index="W 0.0R"_Date_$J(ORDNr,6)_$J(OLNr-100,3),Data=$G(^KPR(PRNr,Index)) Quit PRNr_"`"_Index_"`"_Data ; KWNODE(KLNr,ORDNr,OLNr) New R,Index,PRNr,Kom,Qty Set R=$$GWNODE(KLNr,ORDNr,OLNr) Quit:R="" Set PRNr=$P(R,"`"),Index=$P(R,"`",2),Qty=$P($P(R,"`",3),D),Kom=$P($P(R,"`",3),D,3) Kill ^KPR(PRNr,Index) If $E($O(^KPR(PRNr,"W")))'="W" Kill ^KPR(PRNr,"W") Do MODRES(KLNr,ORDNr,OLNr,1) Do DELORD^FLOWORD3(KLNr,ORDNr,OLNr) Quit ; SWNODE(KLNr,ORDNr,OLNr) New R,Index,Data,PRNr,LevWk,Kom,Qty,OrdRef Set R=$$GWNODE(KLNr,ORDNr,OLNr) Quit:R="" Set PRNr=$P(R,"`"),Index=$P(R,"`",2),Data=$P(R,"`",3) Quit:'PRNr Set Qty=$P(Data,D,4) Set R=^KOD(KLNr,"F",ORDNr,1),OrdRef=$P(R,D,3) Set R=^KOD(KLNr,"F",ORDNr,OLNr) Set:'Qty Qty=$P(R,D,3) Set Data=Qty_D_$P(R,D,25)_D_($P(R,D,27)'="") Set ^KPR(PRNr,Index)=Data,^KPR(PRNr,"W")="" Do MODRES(KLNr,ORDNr,OLNr) Do BUILDORD^FLOWORD3(KLNr,ORDNr,OLNr) Quit ; MODRES(KLNr,ORDNr,OLNr,Negatief) New R,OrdTyp,PRNr,Aantal,ModRes,LevTerm,Type,TOENr Set Negatief=$G(Negatief),OrdTyp=$P(^KOD(KLNr,"F",ORDNr,1),D,25) Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) Set ModRes=$P(R,D,14)'["S" Set:ModRes ModRes=$P(R,D,14)'["Z" If ModRes,OrdTyp="A" Do .Set LevTerm=$P(R,D,25) Set:LevTerm'?5N LevTerm=$$INTDATE^vhDTyp(LevTerm,"DW") .Set ModRes=$$CALCDATE^vhDTyp(LevTerm,"W","MD")'>$$LEVWK^PRODUKT4(PRNr,KLNr) If PRNr,ModRes Do .Set Aantal=$P(R,D,3) Set:Negatief Aantal=-Aantal .Set TOENr=$P(R,D,27),Type=$S(TOENr:"K",1:"S") .Do MODRES^PRODUKT4(PRNr,Type,Aantal) Quit ; ; Herrekenen lijn LRECALC(KLNr,ORDNr,OLNr,Display,KortTyp,ORecalc) New K,R,Rec,BrutoPr,OrdDat,OrdMunt,LijnMunt,PrMunt,Closed,PRNr,Aantal,Prijs,PrRec New Netto,Bruto,Eenheid,LevTerm,Round,OrdTyp Set ORecalc=$G(ORecalc) If '$D(KlMunt)!'$D(IsHandel) New KlMunt,IsHandel Do INITKL New SpecPrys,Korting,Korting1,Korting2,OptKort Set Display=$G(Display),KortTyp=$G(KortTyp) If Display Set FP=UL*100+1 Write @F,@F1 Set R=^KOD(KLNr,"F",ORDNr,1),OrdDat=$P(R,D,2),OrdMunt=$P(R,D,18),Closed=$P(R,D,22) Set OrdTyp=$P(R,D,25),BrutoPr=$P(R,D,27) Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) Do:PRNr .Set Aantal=$P(Rec,D,3) .If Aantal Set $P(Rec,D,48)=$$GetFSCCodeEnGewicht^PRODUKT2(PRNr,Aantal),^KOD(KLNr,"F",ORDNr,OLNr)=Rec .If KlMunt'="MTL",KlMunt'=OrdMunt Do Quit ..If Display Set R=$$TXTPOP^FLOW("RECALC","","KlMunt","""order""","OrdMunt") .Quit:$P(Rec,D,26)="*" Quit:$P(Rec,D,26)="=" .If $L(KortTyp),$P(Rec,D,26)'=KortTyp Quit .Set LijnMunt=$P(Rec,D,22) If Closed,OrdMunt'=LijnMunt,KlMunt'="MTL" Quit .Set Aantal=$P(Rec,D,3),Round=$P(Rec,D,21),LevTerm=$P(Rec,D,25),SpecPrys=$P(Rec,D,26) .Set Korting=$P(Rec,D,7),Korting1=$P(Korting,"#"),Korting2=$P(Korting,"#",2) .Do STORE^vhTERMINA() .Set PrRec=$$KlantPrijs^KPRIJS(KLNr,PRNr,"N",OrdDat,Aantal,LevTerm,$S(Display:"D",1:"")) .Do REFRESH^vhTERMINA() .Set Korting1=$P(PrRec,D,5),Korting2=$P(PrRec,D,6),OptKort=$S($P(PrRec,D,8)="O":"O",1:""),R=$P(Rec,D,7) .If '$L(KortTyp),"O"'[$P(Rec,D,26),Korting1+Korting2'>($P(R,"#")+$P(R,"#",2)) Quit .Set Prijs=$J($P(PrRec,D),0,2),PrMunt=$P(PrRec,D,2) .If Closed,OrdMunt'=PrMunt,'ORecalc Do Quit ..Set R=$$TXTPOP^FLOW("ORECALC","","OrdMunt","PrMunt") .Set Round=$P(PrRec,D,10),Eenheid=$P(PrRec,D,11),Netto=$J(Aantal/Eenheid*Prijs,0,2) .If BrutoPr Set Prijs=$J($P(PrRec,D,4),0,2),Netto=$J(Prijs*(100-Korting1)/100*(100-Korting2)/100*Aantal/Eenheid,0,2) .Set Bruto=$J(Aantal/Eenheid*Prijs,0,2),Korting=Korting1_"#"_Korting2 .If Display Do CALCTOT^FLOW(-$P(Rec,D,9),$P(Rec,D,22),1) .Set $P(Rec,D,6)=Prijs,$P(Rec,D,7)=Korting,$P(Rec,D,9)=Netto,$P(Rec,D,10)=Netto,$P(Rec,D,16)=Bruto .If KlMunt="MTL" Set ($P(Rec,D,22),LijnMunt)=PrMunt .If Display Do CALCTOT^FLOW(Netto,$P(Rec,D,22),1) .If OrdTyp="C"!(OrdTyp="A") Set OptKort="=" .Set $P(Rec,D,21)=Round,$P(Rec,D,26)=OptKort .Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec .If Closed,OrdMunt'=LijnMunt Set R=^KOD(KLNr,"F",ORDNr,1),$P(R,D,18)=LijnMunt,^KOD(KLNr,"F",ORDNr,1)=R .If Display Do EL^PROC .Do KSTBXKWK^FLOWORD4(KLNr,ORDNr,OLNr,Display,KortTyp,ORecalc) Do RecalcCommKort^FLOWMANL("KOD",KLNr,ORDNr,,Display) Quit ; ; Herreken een order RECALC(ORDNr,Display,KortTyp) New %TC,R,OLNr,KLNr,KlMunt,IsHandel,OrdMunt Quit:'$D(^KO1(ORDNr)) Set R=^KO1(ORDNr,"F") Quit:$L($P(R,D,2)) Set Display=$G(Display),KortTyp=$G(KortTyp),KLNr=$P(R,D),OLNr=100 Set OrdMunt=$P(^KOD(KLNr,"F",ORDNr,1),D,18) Do INITKL If KlMunt'="MTL",KlMunt'=OrdMunt Do Quit .If Display Set R=$$TXTPOP^FLOW("RECALC","","KlMunt","""order""","OrdMunt") Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") If '%TC Do LDISP^vhLock("^KOD(KLNr,""F"",ORDNr)","Order "_ORDNr) Quit If Display Set DL(2)="HO" Do ML^PROC Kill DL(2) For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .Set R=^KOD(KLNr,"F",ORDNr,OLNr) .If $P(R,D,2),$P(R,D,26)'="*",$P(R,D,26)'="=" Do LRECALC(KLNr,ORDNr,OLNr,Display,KortTyp,1) .If Display Set DL(2)="DO" Do ML^PROC Kill DL(2) Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit ; ; Met of zonder stockwijziging MODSTOCK(R) New K,PRNr,Aantal,KortText,IdentNr Set PRNr=$P(R,D,2),Aantal=$P(R,D,3),KortText=$P(^KPR(PRNr,0),D),IdentNr=$P(^KPR(PRNr,2),D,25) Set FP=1901 Write @F,@F1,$C(13),"IDENTNR : ",IdentNr,?27,"PRODUKT : ",KortText Set K=$$PI^vhPOPUP("C;C","-O1","","FLOWORD","STOCKUPD") Quit $S(K="":"-",K="N":"",1:K) ; KILLKOML New R,OLNr,PRNr,LEVNr,TOENr,TLLNr,Aantal,FysStock,ResStock,PraStock,Taal Set OLNr=Detail(AD(6)),R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),TOENr=$P(R,D,27),TLLNr=$P($P(R,D,28),";") Quit:'PRNr!'TOENr Quit:'$D(^KTO1(TOENr)) Set LEVNr=$P(^KTO1(TOENr),D) Set R=^KKL(^KK1(KLNr),0),Taal=$P(R,D,9) Set:Taal="" Taal="N" 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("FLOWORD","KILLKOML") If Aantal>PraStock Do .Set FysStock=$$EXTNUM^vhDTyp(FysStock,8,"T.",0) .Set PraStock=$$EXTNUM^vhDTyp(PraStock,8,"T.",0) .Set R=$$^vhTXTPOP("FLOWORD","KOMSTOCK","",FysStock,PraStock,$$EXTNUM^vhDTyp(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(KLNr,ORDNr,OLNr) Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),$P(Rec,D,27,28)=D,^KOD(KLNr,"F",ORDNr,OLNr)=Rec Do SWNODE(KLNr,ORDNr,OLNr) For Do ADD^vhLock("^KTO(LEVNr,TOENr)") Quit:%TC Do LDISP^vhLock("^KTO(LEVNr,TOENr)","Toelevering "_TOENr) Do KWNODE^FLOWTOE(LEVNr,TOENr,TLLNr) Set Rec=^KTO(LEVNr,TOENr,TLLNr),$P(Rec,D,27,28)=D,^KTO(LEVNr,TOENr,TLLNr)=Rec Do SWNODE^FLOWTOE(LEVNr,TOENr,TLLNr) Do EL^PROC Kill ^KTOK(LEVNr,TOENr,TLLNr) Do REMOVE^vhLock("^KTO(LEVNr,TOENr)") Do REMOVE^vhLock("^KPR(PRNr)") Quit ; INIT(Screen) New R Set Screen=$G(Screen,1),ORDNr=UR,KLNr=KC,EwmsLink=$G(EwmsLink,1) Do INITDOMVKP(KLNr,ORDNr) Set HalTOENr=$$HALTOENR(KLNr,ORDNr) Do INITKL,INITSCR(Screen) Set FP=UD*100+1 Write @F,@F1 Do FETCHDET^FLOWORD,WL^PROC Set Input="",Help=1 If $O(^KOD(KLNr,"F",ORDNr,100))="" Set Input=".",Help=0 Set R=^KOD(KLNr,"F",ORDNr,1),OrdTyp=$P(R,D,25) If "\O\U\"'[(D_$P(R,D,3)_D) Quit If $P(R,D,3)="U",$D(^MBLOG("T",KLNr)) Set Input="U",Help=0 If $P(R,D,3)="O" Set Input="O",Help=0 Set $P(R,D,3)="",^KOD(KLNr,"F",ORDNr,1)=R,R=100 For Set R=$O(^KOD(0,"F",R)) Quit:R'?.N If $P(^KOD(0,"F",R),U,16)=103 Set R=^KOD(0,"F",R) Quit Quit:$P(R,U,16)'=103 Set FP=$P(R,U,5)*100+$P(R,U,6) Write @F,$J("",$P(R,U,9)+$P(R,U,13)) Quit ; ; Initialisatie voor levertermijn INITDOMVKP(KLNr,ORDNr,RefDate) New R,VerzendWijze,LandCode,PostCode Set RefDate = $G(RefDate,$$GetRefDate(KLNr,ORDNr)) If $$IsOldRefDate^FLOWORD4(KLNr,ORDNr) Set RefDate=$H Set VerzendWijze=$$DEFAULT^KLVERZW(,KLNr,ORDNr) Set LandCode=$P(^KOD(KLNr,"F",ORDNr,3),D,8) Set:LandCode LandCode=$$LAND^vhRtn1(LandCode) ; Leveringsadres Set:LandCode="" LandCode=$$LAND^vhRtn1(KLNr,"K") Set PostCode=$P(^KOD(KLNr,"F",ORDNr,3),D,6) ; Leveringsadres Set:PostCode="" PostCode=$P(^KKL(^KK1(KLNr),0),D,6) Set blVerzendWijze=##class(DOM.VKP.VerzendWijze).%New(KLNr,VerzendWijze,LandCode,PostCode,ORDNr) Set blLeveringsTermijn=##class(DOM.VKP.LeveringsTermijn).%New(RefDate,blVerzendWijze) Quit GetRefDate(KLNr,ORDNr) ; Referentiedatum voor DOM levertermijn New RefDate Set RefDate=$P(^KOD(KLNr,"F",ORDNr,1),D,45),RefDate=$S($P(RefDate,"#",2):$P(RefDate,"#",2),1:RefDate) If $$IsOldRefDate^FLOWORD4(KLNr,ORDNr) Set RefDate=$H Quit RefDate ; HALTOENR(KLNr,ORDNr) New R,HalTOENr Set R=^KOD(KLNr,"F",ORDNr,1),HalTOENr=$P(R,D,4) If 'HalTOENr,$$ISHALUX^FLOW("O",ORDNr) Set HalTOENr=$$GETNUM^FLOW("KTO","KTO1") Quit HalTOENr ; INITKL New sFL Do FETCHKL^UTILI(KLNr,"sFL") Set KlMunt=$P(sFL(0),D,11) If KlMunt="" Set KlMunt=$$FADEF^vhRtn1() Set IsHandel=$$IsHandel^KLANT5(KLNr) Quit ; DETAIL(Screen) New I,R,TempAD Set Screen=$G(Screen,1) Merge TempAD=AD Do INITSCR(Screen) For I=6,7 Merge AD(I)=TempAD(I) Set FP=UD*100+1 Write @F,@F1 Do WL^PROC Quit ; INITSCR(Screen) New K,R Set Screen=$G(Screen,1) Do INIT^PROC("FLOWORDAD"_$S(Screen=1:"P",1:"J"),"AD") Set AD(2,1)=^LD("L","FLOWORDADM") Set AD(2,2)=^LD("L","FLOWORDADR") Set AD(2,3)=^LD("L","FLOWORDADT") Xecute ^KOD(0,"F","UT") If Screen=1,$D(^KOD(KLNr,"F",ORDNr,1)) Do .Set R=^KOD(KLNr,"F",ORDNr,1),K=$P(R,D,27),R=100 .For Set R=$O(^KOD(0,"F",R)) Quit:R'?.N If $P(^KOD(0,"F",R),U,16)=127 Set R=^KOD(0,"F",R) Quit .Quit:$P(R,U,16)'=127 .Set FP=$P(R,U,5)*100+$P(R,U,6) .Write @F,$J("",$P(R,U,9)+$P(R,U,13)) .Xecute "Set R="_$P(R,U,8) .Write @F,R Quit ; INITEDI(KLNr,EDIORDNr) New R,FaxNr,KlUser,OrgalRef,DevNr,IntPers,IsOrgal,TranspRefKL If $L($G(EDIORDNr)),$D(^MBLOG("EDI",KLNr,+EDIORDNr,EDIORDNr)) Do .Set R=^MBLOG("EDI",KLNr,+EDIORDNr) .If $P(R,D,2)="F" Set FaxNr=$P(^KKL(^KK1(KLNr),1),D,24),B(110)=FaxNr .Set R=^MBLOG("EDI",KLNr,+EDIORDNr,EDIORDNr),OrdRef=$P(R,D,2),KlUser=$P(R,D,4),TranspRefKL=$P(R,D,12) .Set OrgalRef=$P(R,D,25),IsOrgal=$P(R,D,26) .If 'IsOrgal,$L(OrgalRef) Set OrdRef="EDI "_OrdRef_"/"_OrgalRef .Else Set OrdRef=DT_" EDI "_OrdRef .Set:'IsOrgal OrgalRef="" Set:$L(OrgalRef) (B(119),$P(B(1),D,19))=OrgalRef .Set:$L(KlUser) B(109)=KlUser_"#" .Set DevNr=$G(io,$$IO^cQ5) .Set IntPers=$P($$DEVUSER^vhUSER(DevNr),";") .Set B(108)=IntPers_"#"_DevNr_"#"_$H,B(133)=TranspRefKL,B(135)=+EDIORDNr Quit ; ;Type H = herstockeringskosten KOSTEN(R,Type,Kost,Insert,Line,Show) Set:$G(Insert)="" Insert="A" Set Line=$G(Line),Show=$G(Show,1) If Type="H",$P(R,D,3)<0 Do .New I,PRNr,Netto,Munt,MuntPar .Set Kost=$G(Kost,"?"),PRNr=$P(R,D,2) .If Kost="?" Quit:'$D(^KPR(PRNr,"J5810")) .For I=2,4,7,12:1:15,18:1:21,23:1:35 Set $P(R,D,I)="" .Set $P(R,D,17)="KF1925",Munt=$P(R,D,22) .If $E(Kost,$L(Kost))="?" Do ; Kosten bevestigen ..If $E(Kost,$L(Kost)-1)="%" Do ; Kosten % ...Set Kost=$S(Kost="%?":20,1:+Kost) ...Set Kost=$$ASKL^vhINP("FLOWORD","HERSTOCKKOSTPC") ...Quit:'Kost ...Set $P(R,D,3)=-$P(R,D,3),$P(R,D,5)=$$TXT("HStKost")_" "_Kost_"%",$P(R,D,6)=$J($P(R,D,6)*Kost/100,0,2) ...For I=9,10,16 Set $P(R,D,I)=$J($P(R,D,3)*$P(R,D,6),0,2) ..Else Do ; Vaste kosten ...Set Kost=+Kost ...Set Kost=$$ASKL^vhINP("FLOWORD","HERSTOCKKOSTVK") ...Quit:'Kost ...Set Kost=$$MUNT^vhRtn1(,5,Kost_"#1",,Munt) ...Set $P(R,D,3)="",$P(R,D,5)=$$TXT("HStKost"),$P(R,D,6)="" ...For I=9,10,16 Set $P(R,D,I)=Kost .Else Do ; Default kosten ..If $E(Kost,$L(Kost))="%" Do ; Kosten % ...Set Kost=$S(Kost="%":20,1:+Kost) ...Quit:'Kost ...Set $P(R,D,3)=-$P(R,D,3),$P(R,D,5)=$$TXT("HStKost")_" "_Kost_"%",$P(R,D,6)=$J($P(R,D,6)*Kost/100,0,2) ...For I=9,10,16 Set $P(R,D,I)=$J($P(R,D,3)*$P(R,D,6),0,2) ..Else If Kost Do ; Vaste kosten ...Set Kost=$$MUNT^vhRtn1(,5,Kost_"#1",,Munt) ...Set $P(R,D,3)="",$P(R,D,5)=$$TXT("HStKost"),$P(R,D,6)="" ...For I=9,10,16 Set $P(R,D,I)=Kost .Quit:'Kost .Set Netto=$P(R,D,9) .If KV="MTL" Do ..Set MuntPar=$$MUNT^vhRtn1(Munt,,12) ..Set Netto=$J(Netto*MuntPar/LPAR,1,2) .Set UTOT=UTOT+Netto .Do SHOWTOT^KFTOT(UTOT) .Do INSERT(R,Insert,Line,Show) Quit ; PROJREF New R,PRNr Set Rec=^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))),PRNr=$P(Rec,D,2) Do:PRNr .Set:$G(ProjRef)="" ProjRef=$P(Rec,D,5) .Set R=$$ASKL^vhINP("FLOWORD","PROJREF") .Quit:R="-" Quit:R="." .Set ($P(Rec,D,5),ProjRef)=R,^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6)))=Rec .If $G(AD(13))'="FLOWORDADJ" Do DETAIL(2) Quit .Do EL^PROC Quit ; SWPROJ(IsProj) New R,K,B Set IsProj='IsProj Do:'IsProj DETAIL^FLOWORD(1) Set R=100 For Set R=$O(^KOD(0,"F",R)) Quit:'R S K=^KOD(0,"F",R) I $P(K,U,16)=103 Do Quit .Set R=K,B(1)=^KOD(KLNr,"F",ORDNr,1),K=$P(B(1),D,3),FP=$P(R,U,5)*100+$P(R,U,6) .Xecute "Set K="_$P(R,U,8) .Write @F,$J("",$P(R,U,9)+$P(R,U,13)),@F,K Quit ; ; Invullen van de default data voor een order HDefault(B,HDefault) New Piece Set Piece="" For Set Piece=$O(HDefault(Piece)) Quit:Piece="" Set B(100+Piece)=HDefault(Piece) Kill HDefault Quit ; ; Tekst toevoegen indien productiedagen > 3 CheckTBXDagPlus(ORDNr) New DagPlus,DefaultDagPlus,Rec,KLNr,OLNr,PRNr,IsTBX,Taal,BlockId,GenTyp Set KLNr=$P($G(^KO1(ORDNr,"F")),D) Quit:'KLNr Set DagPlus=$G(^HADPR("DAGPLUS",KLNr),$G(^HADPR("DAGPLUS"))) Set DefaultDagPlus=$P(DagPlus,"\",2) Set DagPlus=$P(DagPlus,"\",1) If DagPlus>DefaultDagPlus,'$$ISTERUGN^FLOWORD5(ORDNr) Do . Set IsTBX=0,OLNr=100 . For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do Quit:IsTBX . . Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) . . If PRNr Set GenTyp=$$GENTYP^HAD(PRNr) If $P(GenTyp,D)="TBX",$P(GenTyp,D,2)'="HKS" Set IsTBX=1 . Quit:'IsTBX . Set OLNr=$O(^KOD(KLNr,"F",ORDNr,99)) . Quit:OLNr="" . Set Taal=$P(^KKL(^KK1(KLNr),0),D,9) Set:Taal="" Taal="N" . Set Tekst=$$TXT("DagPlus2",,Taal),BlockId=$P($H,",",2) . Xecute "Set Tekst="_Tekst . Do TINSERT("B",OLNr,Tekst,0,BlockId) . Set Tekst=$$TXT("DagPlus",,Taal) . Xecute "Set Tekst="_Tekst . Do TINSERT("B",OLNr,Tekst,0,BlockId) Quit ; ; Event bij aanmaken van een orderlijn ProductOrderLijnGemaakt(KlantID,OrderID,OrderLijnID) New Rec,ProductID,Aantal,OrderLijnCode,ProductOrderLijnEventData,ProductOrderLijnGemaaktEvent Set Rec=^KOD(KlantID,"F",OrderID,OrderLijnID),ProductID=$P(Rec,D,2),Aantal=$P(Rec,D,3),OrderLijnCode=$$GeefOrderLijnCode^FLOWORD(KlantID,OrderID,OrderLijnID) If ProductID,Aantal>0{ Set ProductOrderLijnEventData = ##class(DOM.VKP.event.ProductOrderLijnEventData).%New(OrderID, OrderLijnCode, KlantID, ProductID) Set ProductOrderLijnGemaaktEvent = ##class(DOM.VKP.event.ProductOrderLijnGemaakt).%New(ProductOrderLijnEventData) Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(ProductOrderLijnGemaaktEvent) } Quit ; ; Event bij verwijderen van een orderlijn ProductOrderLijnAnnulatie(KlantID,OrderID,OrderLijnID) New Rec,ProductID,Aantal,OrderLijnCode,ProductOrderLijnEventData,ProductOrderLijnAnnulatieEvent Set Rec=^KOD(KlantID,"F",OrderID,OrderLijnID),ProductID=$P(Rec,D,2),Aantal=$P(Rec,D,3),OrderLijnCode=$$GeefOrderLijnCode^FLOWORD(KlantID,OrderID,OrderLijnID) If ProductID,Aantal>0{ Set ProductOrderLijnEventData = ##class(DOM.VKP.event.ProductOrderLijnEventData).%New(OrderID, OrderLijnCode, KlantID, ProductID) Set ProductOrderLijnAnnulatieEvent = ##class(DOM.VKP.event.ProductOrderLijnAnnulatie).%New(ProductOrderLijnEventData) Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(ProductOrderLijnAnnulatieEvent) } Quit ; ; Event bij wijzigen van een orderlijn ProductOrderLijnGewijzigd(KlantID,OrderID,OrderLijnID,WijzigingType) New WijzigingTypes Set WijzigingTypes = ##class(DOM.VKP.impl.ProductOrderLijnWijzigingTypes).%New() Do WijzigingTypes.Insert(WijzigingType) Do ProductOrderLijnWijzigingen(KlantID, OrderID, OrderLijnID, WijzigingTypes) Quit ProductOrderLijnWijzigingen(KlantID,OrderID,OrderLijnID,WijzigingTypes) New Rec,ProductID,Aantal,OrderLijnCode,ProductOrderLijnWijzigEventData,ProductOrderLijnGewijzigdEvent Set Rec=^KOD(KlantID,"F",OrderID,OrderLijnID),ProductID=$P(Rec,D,2),Aantal=$P(Rec,D,3),OrderLijnCode=$$GeefOrderLijnCode^FLOWORD(KlantID,OrderID,OrderLijnID) If ProductID,Aantal>0{ Set ProductOrderLijnWijzigEventData = ##class(DOM.VKP.event.ProductOrderLijnWijzigEventData).%New(OrderID, OrderLijnCode, KlantID, ProductID, WijzigingTypes) Set ProductOrderLijnGewijzigdEvent = ##class(DOM.VKP.event.ProductOrderLijnGewijzigd).%New(ProductOrderLijnWijzigEventData) Do ##class(TECH.PubSub.OrchestrationContext).GetEventRaiser().RaiseEventAsync(ProductOrderLijnGewijzigdEvent) } Quit ; ; Ophalen taalafhankelijke tekst TXT(Ref,Piece,Taal) If '$D(Piece) Set Piece=2 Quit $P($P($T(@("T"_Ref)),U,Piece),D,$F("NFDE",$G(Taal,$G(KT,"N")))-1) ; THStKost ;Herstockeringskosten\Frais de stockage\Herstockeringskosten\Herstockeringskosten TDagPlus ;"ªBVoor de voorgemonteerde TANDEMBOX(en) in dit orderªb"\"ªBIl y a un délai de production de "_(DagPlus-3*24)_" heures en plus pour le(s)ªb"\"ªBVoor de voorgemonteerde TANDEMBOX(en) in dit orderªb"\"ªBVoor de voorgemonteerde TANDEMBOX(en) in dit orderªb" TDagPlus2 ;"ªBgeldt een extra productietijd van "_(DagPlus-3*24)_" uur.ªb"\"ªBTANDEMBOX préalablement monté(s) dans cette commande.ªb"\"ªBgeldt een extra productietijd van "_(DagPlus-3*24)_" uur.ªb"\"ªBgeldt een extra productietijd van "_(DagPlus-3*24)_" uur.ªb" ;