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,LEVNr,TOENr,TLNr 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 Ingave^Flow.Order.NieuweProductOrderlijn(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) .Set TOENr=$P(R,D,27),TLNr=$P(R,D,28) .Do INSERT(R,Insert,Line,Show),PRCOUNT^FLOW("+","KOD",Show),KOSTEN(R,"H",Kost,Insert,Line,Show) .If $G(IsProj),Show Do PROJREF .If ('$G(WordtKlantBarcodeAutomatischIngevuld) && ($G(HeeftKlantBarcode)||$$MoetKlantBarcodeOpvragen(KLNr,UC))),Show Do ..Do KLANTBARCODE ..Set HeeftKlantBarcode = $$HEEFTKLANTBARCODE^FLOW("O",ORDNr) .If TOENr,TLNr Do ..Set LEVNr=$P(^KTO1(TOENr),D) ..Do InvoerUitvoerLinkAangemaakt^FLOWTOE2(LEVNr,TOENr,TLNr) 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 MoetKlantBarcodeOpvragen(KLNr, PRNr) Quit ##class(BL.Legacy.FLOWORD2).%New().MoetKlantBarcodeOpvragen(KLNr,PRNr) ; ; 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) .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"),"\") Set R=^KOD(KLNr,"F",ORDNr,1),Date=$P(R,"\",2) Set Date=$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(Date),"DS"),"\","") Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,"\",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)'="") Do ##class(vhLib.Logger).%New().Debug("SETTING WNODE", "SET WNODE ORD " _KLNr _" " _ORDNr _" " _OLNr _" - Index " _Index _" - PRNr " _PRNr _" - Data " _Data) Set ^KPR(PRNr,Index)=Data,^KPR(PRNr,"W")="" Do MODRES(KLNr,ORDNr,OLNr) Do BUILDORD^FLOWORD3(KLNr,ORDNr,OLNr) Quit ; UPDATEWNODE(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^vhLib.DataTypes(LevTerm,"DW") .Set ModRes=$$CALCDATE^vhLib.DataTypes(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 ; ; Opnieuw ophalen van gegevens van het product voor een lijn LRECALC(KLNr,ORDNr,OLNr,Display,KortTyp,ORecalc,DontCheckClosed) New K,R,OrdDat,OrdMunt,LijnMunt,Closed,Aantal,Prijs,PRNr,LijnType new Order , Orderlijn , Product , PrijsInfo , LijnType, OrderlijnPrijsBepaler, KlantID #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) #dim Order As DOM.VKP.Order = ##class(DOM.DomeinContext).Instance().GeefOrderAPI().GeefOrder(ORDNr) #dim Orderlijn As DOM.VKP.ProductOrderlijn = Order.GeefOrderLijnViaVolgnummer(OLNr) #dim PrijsInfo As APPS.VKP.dto.PrijsInfo Set ORecalc=$G(ORecalc) If '$D(KlMunt)!'$D(IsHandel) New KlMunt,IsHandel Do INITKL Set Display=$G(Display),KortTyp=$G(KortTyp) If Display Set FP=UL*100+1 Write @F,@F1 Set R=^KOD(KLNr,"F",ORDNr,1) Set OrdDat=$$EXTDATE^vhLib.DataTypes(Order.GeefCreatieDatum()) Set OrdMunt=Order.GeefMunt() Set Closed=Order.GeefStatus()&&'$G(DontCheckClosed) #dim Product As DOM.common.Product set LijnType = Orderlijn.GeefType() if LijnType = ##class(DOM.VKP.enu.OrderLijnType).Product() do . set PRNr = Orderlijn.GeefProductID() . set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(PRNr) . Do Orderlijn.BerekenEnZetHoutCertificaat() . Do Order.Save() . Set LijnMunt=Orderlijn.GeefMunt() . Quit:(Closed) . Do STORE^vhTERMINA() . Set PrijsInfo=$$KlantPrijsObject^KPRIJS(KLNr,PRNr,"N",OrdDat,Orderlijn.GeefAantal(),Orderlijn.GeefLeverdag(),$S(Display:"D",1:"")) . Do REFRESH^vhTERMINA() . Quit:('##class(BL.Legacy.FLOW).MagUitvoerenLRECALC(Orderlijn,PrijsInfo,KortTyp)) . Quit:('##class(BL.Legacy.FLOW).IsMuntCorrect(PrijsInfo,OrdMunt,KlMunt,ORecalc)) . If Display Do CALCTOT^FLOW(-Orderlijn.GeefTotaalNettoExclBTW(),Orderlijn.GeefMunt(),1) . Set OrderlijnPrijsBepaler = ##class(APPS.VKP.OrderlijnPrijsBepaler).%New(KlantID,Order.GeefPrijsAffichering()) . If OrderlijnPrijsBepaler.MagPrijzenHerladen(Orderlijn) Do .. do Orderlijn.ZetPrijsAanduiding($$GeefPrijsAanduiding(Order,PrijsInfo)) .. Do OrderlijnPrijsBepaler.VulInPrijzen(Orderlijn,Orderlijn.GeefAantal(),PrijsInfo) . If Closed,OrdMunt'=LijnMunt Do Order.ZetMunt(LijnMunt) . do Order.Save() . If Display Do . . Do CALCTOT^FLOW(Orderlijn.GeefTotaalNettoExclBTW(),Orderlijn.GeefMunt(),1) . . Do EL^PROC . Do KSTBXKWK^FLOWORD4(KLNr,ORDNr,OLNr,Display,KortTyp,ORecalc) Do RecalcCommKort^FLOWMANL("KOD",KLNr,ORDNr,,Display) Quit GeefPrijsAanduiding(Order, PrijsInfo) #dim PrijsAanduiding As DOM.VKP.enu.PrijsAanduiding = ##class(DOM.VKP.enu.PrijsAanduiding).NormalePrijs() If PrijsInfo.PrijsBerekingManier = ##class(APPS.VKP.enu.PrijsBerekingManier).Geforceerd() { Set PrijsAanduiding = ##class(DOM.VKP.enu.PrijsAanduiding).OptioneleKorting() } If (Order.GeefOrderType()=##class(DOM.VKP.enu.OrderType).Contract())||(Order.GeefOrderType()=##class(DOM.VKP.enu.OrderType).Afroep()) { Set PrijsAanduiding = ##class(DOM.VKP.enu.PrijsAanduiding).VastePrijs() } Quit PrijsAanduiding ; Herreken een order RECALC(ORDNr,Display,KortTyp,DontCheckClosed) 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,.DontCheckClosed) .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^vhLib.DataTypes(FysStock,8,"T.",0) .Set PraStock=$$EXTNUM^vhLib.DataTypes(PraStock,8,"T.",0) .Set R=$$^vhTXTPOP("FLOWORD","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(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) Do InvoerUitvoerLinkVerbroken^FLOWTOE2(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, IsNieuweToeleveringGemaakt Set IsNieuweToeleveringGemaakt = 0 Set Screen=$G(Screen,1),ORDNr=UR,KLNr=KC,EwmsLink=$G(EwmsLink,1) Do INITDOMVKP(KLNr,ORDNr) Set HalTOENr=$$HALTOENR(KLNr,ORDNr,.IsNieuweToeleveringGemaakt) 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 if '$length($get(KLNr)) set KLNr=$P(^KO1(ORDNr,"F"),"\") 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(APPS.VKP.VerzendWijze).%New(KLNr,VerzendWijze,LandCode,PostCode,ORDNr) Set LeveringsTermijnFactory = ##class(APPS.VKP.impl.LeveringsTermijnFactory).%New() #dim PartijID As %String = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) #dim blLeveringsTermijn As APPS.VKP.LeveringsTermijn = LeveringsTermijnFactory.MaakLeveringsTermijn(RefDate, blVerzendWijze, PartijID, ##class(DOM.common.enu.Personality).VanHoecke()) 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,IsNieuweToeleveringGemaakt) 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") Set IsNieuweToeleveringGemaakt = 1 } Quit HalTOENr ; INITKL New sFL,PartijID Do FETCHKL^UTILI(KLNr,"sFL") Set KlMunt=$P(sFL(0),D,11) If KlMunt="" Set KlMunt=$$FADEF^vhRtn1() Set IsHandel=$$IsHandel^KLANT5(KLNr) Set PartijID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) set KlantObject = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefKlant(PartijID) 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 : TO DO : Niet meer gebruikt volgens CW !! 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 ; KLANTBARCODE New KlantBarcodePieceInKOD,AskSubnode,VariabeleNaam #dim KlantBarcodePieceInKOD As %Integer = 52 #dim AskSubnode As %String = "KLANTBARCODE" #dim VariabeleNaam As %String = "KlantBarcode" k @VariabeleNaam #dim ExactAantalTekens As %Integer = 13 Do VRAAGINPUTMetExactAantalTekens("KlantBarcode",KlantBarcodePieceInKOD,AskSubnode,ExactAantalTekens) Quit PROJREF New ProjectReferentiePieceInKOD,AskSubnode #dim ProjectReferentiePieceInKOD As %Integer = 5 #dim AskSubnode As %String = "PROJREF" Do VRAAGINPUT("ProjRef",ProjectReferentiePieceInKOD,AskSubnode) Quit VRAAGINPUTMetExactAantalTekens(VariabeleNaam,PieceInKOD,AskSubnode,ExactAantalTekens) New Txt,HeeftNieuweInput,EerstePoging #dim NieuweInput As %String = "-" #dim EerstePoging As %Boolean = 1 Set:('$D(@VariabeleNaam)) @VariabeleNaam = "" While (NieuweInput '= "") && ($Length(NieuweInput) '= ExactAantalTekens) { If 'EerstePoging { Set Txt(1)="De klantbarcode moet exact "_ExactAantalTekens_" tekens bevatten." Set Txt=$$WILD^vhTXTPOP("C;C","Waarschuwing","Txt") } Set NieuweInput = $$VRAAGINPUT(VariabeleNaam,PieceInKOD,AskSubnode,ExactAantalTekens) Set EerstePoging = 0 } Quit VRAAGINPUT(VariabeleNaam,PieceInKOD,AskSubnode,ExactAantalTekens) New R,PRNr,NieuweInput #dim NieuweInput As %String = "" Set Rec=^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))),PRNr=$P(Rec,D,2) Do:PRNr .Set:$G(@VariabeleNaam)="" @VariabeleNaam=$P(Rec,D,PieceInKOD) .Set R=$$ASKL^vhINP("FLOWORD",AskSubnode) .Quit:R="-" Quit:R="." .Set NieuweInput = R .If ($G(ExactAantalTekens) = "") || (ExactAantalTekens = $Length(NieuweInput)) Do ..Set ($P(Rec,D,PieceInKOD),@VariabeleNaam)=NieuweInput,^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6)))=Rec ..If $G(AD(13))'="FLOWORDADJ" Do DETAIL(2) Quit ..Do EL^PROC Quit NieuweInput ; 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,GrootsteVertraging,Taal,BlockId,Product Set KLNr=$P($G(^KO1(ORDNr,"F")),D) Quit:'KLNr If '$$ISTERUGN^FLOWORD5(ORDNr) Do . New ProductieTermijn, PartijID, VerkoopAPI, Klant . Set ProductieTermijn = ##class(DOM.VKP.impl.ProductieTermijnBepaler).%New() . Set VerkoopAPI = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI() . Set PartijID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) . Set Klant = VerkoopAPI.GeefKlant(PartijID) . Set DagPlus=0,OLNr=100,DefaultDagPlus=Klant.GeefKlantOrderInstellingen().GeefTBXVertragingDrempelInUrenVoorOrderBevestiging() . For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do . . Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) . . If PRNr Do . . . Set Product = ##class(DOM.DomeinContext).Instance().GeefProductAPI().GeefProduct(PRNr) . . . If (Product.%Extends("DOM.PM.TBXProduct.TBXLade")) Set DagPlus=##class(TECH.Math).Max(ProductieTermijn.GeefAantalProductieDagen(Product,KLNr), DagPlus) . Quit:DagPlus<=DefaultDagPlus . 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(KlantNr,OrderID,OrderLijnNr,OudAantal) New Rec,ProductID,Aantal,OrderLijnID Set Rec=^KOD(KlantNr,"F",OrderID,OrderLijnNr) Set ProductID=$P(Rec,"\",2) Set Aantal=$G(OudAantal,$P(Rec,"\",3)) Set OrderLijnID=$$GeefOrderLijnCode^FLOWORD(KlantNr,OrderID,OrderLijnNr) If ProductID { New KlantID Set KlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KlantNr) If Aantal>0 { New ProductOrderLijnEventData,ProductOrderLijnGemaaktEvent Set ProductOrderLijnEventData = ##class(DOM.VKP.event.ProductOrderLijnEventData).%New(OrderID, OrderLijnID, KlantID, ProductID) Set ProductOrderLijnGemaaktEvent = ##class(DOM.VKP.event.ProductOrderLijnGemaakt).%New(ProductOrderLijnEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(ProductOrderLijnGemaaktEvent) } ElseIf Aantal<0 { New TerugnameOrderLijnEventData,TerugnameOrderLijnGemaaktEvent Set TerugnameOrderLijnEventData = ##class(DOM.VKP.event.TerugnameOrderLijnEventData).%New(OrderID, OrderLijnID, KlantID, ProductID) Set TerugnameOrderLijnGemaaktEvent = ##class(DOM.VKP.event.TerugnameOrderLijnGemaakt).%New(TerugnameOrderLijnEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(TerugnameOrderLijnGemaaktEvent) } } Quit ; ; Event bij verwijderen van een orderlijn ProductOrderLijnAnnulatie(KlantNr,OrderID,OrderLijnID,OudAantal) New Rec,ProductID,Aantal,OrderLijnCode Set Rec=^KOD(KlantNr,"F",OrderID,OrderLijnID) Set ProductID=$P(Rec,D,2) Set Aantal=$G(OudAantal,$P(Rec,D,3)) Set OrderLijnCode=$$GeefOrderLijnCode^FLOWORD(KlantNr,OrderID,OrderLijnID) If ProductID { New KlantID Set KlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KlantNr) If Aantal>0{ New ProductOrderLijnEventData,ProductOrderLijnAnnulatieEvent Set ProductOrderLijnEventData = ##class(DOM.VKP.event.ProductOrderLijnEventData).%New(OrderID, OrderLijnCode, KlantID, ProductID) Set ProductOrderLijnAnnulatieEvent = ##class(DOM.VKP.event.ProductOrderLijnAnnulatie).%New(ProductOrderLijnEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(ProductOrderLijnAnnulatieEvent) } ElseIf Aantal<0{ New TerugnameOrderLijnEventData,TerugnameOrderLijnAnnulatieEvent Set TerugnameOrderLijnEventData = ##class(DOM.VKP.event.TerugnameOrderLijnEventData).%New(OrderID, OrderLijnCode, KlantID, ProductID) Set TerugnameOrderLijnAnnulatieEvent = ##class(DOM.VKP.event.TerugnameOrderLijnAnnulatie).%New(TerugnameOrderLijnEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(TerugnameOrderLijnAnnulatieEvent) } } 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(KlantNr,OrderID,OrderLijnID,WijzigingTypes) New Rec,ProductID,Aantal,OrderLijnCode,ProductOrderLijnWijzigEventData,ProductOrderLijnGewijzigdEvent,TerugnameOrderLijnWijzigEventData,TerugnameOrderLijnGewijzigdEvent Set Rec=^KOD(KlantNr,"F",OrderID,OrderLijnID),ProductID=$P(Rec,D,2),Aantal=$P(Rec,D,3),OrderLijnCode=$$GeefOrderLijnCode^FLOWORD(KlantNr,OrderID,OrderLijnID) If ProductID { #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KlantNr) If 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.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(ProductOrderLijnGewijzigdEvent) } ElseIf Aantal<0{ Set TerugnameOrderLijnWijzigEventData = ##class(DOM.VKP.event.TerugnameOrderLijnWijzigEventData).%New(OrderID, OrderLijnCode, KlantID, ProductID, WijzigingTypes) Set TerugnameOrderLijnGewijzigdEvent = ##class(DOM.VKP.event.TerugnameOrderLijnGewijzigd).%New(TerugnameOrderLijnWijzigEventData) Do ##class(TECH.Context).Instance().GeefPubSubAPI().GeefEventRaiser().RaiseEventAsync(TerugnameOrderLijnGewijzigdEvent) } } 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-DefaultDagPlus*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-DefaultDagPlus*24)_" uur.ªb"\"ªBTANDEMBOX préalablement monté(s) dans cette commande.ªb"\"ªBgeldt een extra productietijd van "_(DagPlus-DefaultDagPlus*24)_" uur.ªb"\"ªBgeldt een extra productietijd van "_(DagPlus-DefaultDagPlus*24)_" uur.ªb" ;