PVFLOWO2 ;Order [ 11/08/2003 4:06 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) 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 .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 .Do SWNODE(KLNr,ORDNr,FromNr) .Do LRECALC(KLNr,ORDNr,FromNr,Show) .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 .Do SWNODE(KLNr,ORDNr,OLNr) .Do LRECALC(KLNr,ORDNr,OLNr,Show) .If $D(UL),$D(UD),UL'>$P(UD,D,2) Set UL=UL+1 .If Show Do NIEUWV^PROC3(OLNr) Quit ; ; Insert produkt PINSERT(Insert,Line,PRNr,Aantal,Prijs,Korting1,Korting2,LevTerm,Show,StkCorr,NoRecalc,%Kost) New B,R 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,"?") Set K="." If PRNr Set K=$$COMPR^PRODUKT(PRNr),K=$E(K,1,$L(K)-1) Do SCROL^KF0(Aantal,Prijs,Korting1,Korting2,LevTerm,NoRecalc) 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 StkCorr="?",$P(R,D,3)<0 Set StkCorr=$$MODSTOCK(R) Quit:StkCorr="-" .Set $P(R,D,14)=$P(R,D,14)_$S(StkCorr="?":"",1:StkCorr) .Do INSERT(R,Insert,Line,Show),PRCOUNT^FLOW("+","KOD"),%KOSTEN(R,"H",%Kost,Insert,Line,Show) For Quit:$P($G(ContrLns),U,2)="" Do PINSERT("","",$P(ContrLns,U),"","","","",LevTerm) 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" ..Set:$P($P(R,D,17),"#",2) BlockId=BlockId_"BF" .Set $P(R,D,18)=BlockId .Do INSERT(R,Insert,Line,Show) Set: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 R,PRNr,OPRNr,NPRNr,LEVNr,Recalc Set OLNr=$G(Detail(@DL(1)@(6))) Quit:'OLNr Set R=^KOD(KLNr,"F",ORDNr,OLNr),OPRNr=$P(R,D,2) 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 If $P(^KPR(NPRNr,1),D,25) Do TXTL^vhINP("FLOW","NIETAKTIEF") Quit 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) 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)") 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),ModRes=$$INTDATE^vhDTyp(LevTerm,"DW")'>$$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 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) Quit:'PRNr 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 R=$$GetKorting^KORTING(KLNr,PRNr,"N",OrdDat,Aantal,LevTerm,$S(Display:"D",1:"")) Do REFRESH^vhTERMINA() Set Korting1=$LG(R,2),Korting2=$LG(R,3),OptKort=$S($LG(R,6)="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 R=$$PROD^KPRIJS(PRNr,Korting1,Korting2,KlMunt,BrutoPr,IsHandel) Set Prijs=$J($P(R,D),0,2),PrMunt=$P(R,D,2) If Closed,OrdMunt'=PrMunt,'ORecalc Do Quit .Set R=$$TXTPOP^FLOW("ORECALC","","OrdMunt","PrMunt") Set Korting1=$P(R,D,5),Korting2=$P(R,D,6),Round=$P(R,D,10),Eenheid=$P(R,D,11) Set Netto=$J(Aantal/Eenheid*Prijs,0,2) If BrutoPr Set Prijs=$J($P(R,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 Quit ; ; Herreken een order RECALC(ORDNr,Display,KortTyp) New 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") 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 New R Set ORDNr=UR,KLNr=KC,EwmsLink=$G(EwmsLink,1) Do INITKL Do INIT^PROC("FLOWORDADP","AD") Set AD(2,1)=^LD("L","FLOWORDADM") Set AD(2,2)=^LD("L","FLOWORDADR") Set AD(2,3)=^LD("L","FLOWORDADT") 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 ; INITKL New sFL Do FETCHKL^UTILI(KLNr,"sFL") Set KlMunt=$P(sFL(0),D,11) If KlMunt="" Set KlMunt=$$FADEF^vhRtn1() Set IsHandel=$P(sFL(1),D,25) 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 PRNr,Netto,Munt,MuntPar .Set %Kost=$G(%Kost,"?"),PRNr=$P(R,D,2) .Quit:'$D(^KPR(PRNr,"J5810")) .If %Kost="?" Set %Kost=20,%Kost=$$ASKL^vhINP("FLOWORD","HERSTOCKKOST") .Quit:'%Kost .For I=2,4,7,12:1:15,18:1:21,23:1:35 Set $P(R,D,I)="" .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) .Set $P(R,D,17)="KF1925" .Set Netto=$P(R,D,9),Munt=$P(R,D,22) .If KV="MTL" Do ..Set MuntPar=$$MUNT^vhRtn1(Munt,,12) ..Set Netto=$J(Netto*MuntPar/LPAR,1,2) .Set UTOT=UTOT+Netto ..Set Netto=$J(Netto*MuntPar/LPAR,1,2) .Set UTOT=UTOT+Netto .Do SHOWTOT^KFTOT(UTOT) .Do INSERT(R,Insert,Line,Show) Quit ; BACKORD(KLNr,ORDNr,OLNr,BOQty,RestQty,LevWk) ; RestQty is optioneel New R,ModAant,Aantal,OLUNr,LEVNr,TOENr,TLNr,TLUNr,ModOLNr,SwapFrom,SwapTo Set ModAant=$G(RestQty),LevWk=$G(LevWk),ModOLNr=OLNr Set R=^KOD(KLNr,"F",ORDNr,OLNr),$P(R,D,23)=$P(R,D,3),^KOD(KLNr,"F",ORDNr,OLNr)=R Set:'ModAant ModAant=$P(R,D,3)-BOQty Set:LevWk="" LevWk=$P(R,D,25) Set R=^KOD(KLNr,"F",ORDNr,OLNr),Aantal=$P(R,D,3),$P(R,D,23)="" For I=9,10,16 Set:Aantal $P(R,D,I)=$P(R,D,I)/Aantal Set $P(R,D,I)=$J($P(R,D,I)*BOQty,0,2) Set $P(R,D,3)=BOQty,$P(R,D,25)=LevWk,OLUNr=$P(R,D,15),OLUNr=OLUNr\100*100+99 Set OLUNr=$O(^ORD("IU",ORDNr,OLUNr),-1)+1,$P(R,D,15)=OLUNr Set OLNr=^KOD(KLNr,"F",ORDNr,0),^KOD(KLNr,"F",ORDNr,0)=OLNr+1 Set ^KOD(KLNr,"F",ORDNr,OLNr)=R,TOENr=$P(R,D,27),TLNr=$P(R,D,28) Do SWNODE(KLNr,ORDNr,OLNr) If TOENr Do .Set LEVNr=$P(^KTO1(TOENr),D),R=^KTO(LEVNr,TOENr,TLNr),Aantal=$P(R,D,3) .For I=9,10,16 Set:Aantal $P(R,D,I)=$P(R,D,I)/Aantal Set $P(R,D,I)=$J($P(R,D,I)*BOQty,0,2) .Set TLNr=^KTO(LEVNr,TOENr,0),^KTO(LEVNr,TOENr,0)=TLNr+1 .Set $P(R,D,3)=BOQty,$P(R,D,13)=TLNr-100,TLUNr=$P(R,D,15),TLUNr=TLUNr\100*100+99 .Set TLUNr=$O(^TO("IU",TOENr,TLUNr),-1)+1,$P(R,D,15)=TLUNr,$P(R,D,28)=OLNr .Set ^KTO(LEVNr,TOENr,TLNr)=R .Do SWNODE^FLOWTOE(LEVNr,TOENr,TLNr) .Set R=^KOD(KLNr,"F",ORDNr,OLNr),$P(R,D,28)=TLNr,^KOD(KLNr,"F",ORDNr,OLNr)=R Set SwapFrom=OLNr For Do Quit:SwapTo'>ModOLNr .Set SwapTo=$O(^KOD(KLNr,"F",ORDNr,SwapFrom),-1) .Quit:SwapTo'>ModOLNr .Do LSWAP(ORDNr,SwapFrom,SwapTo,1) .Set SwapFrom=SwapTo Do MODAANT(KLNr,ORDNr,ModOLNr,ModAant) Quit ; MODAANT(KLNr,ORDNr,OLNr,Aantal,LevWk) New R,OldAant,TOENr,TLNr Set LevWk=$G(LevWk) Set:'$G(KLNr) KLNr=$P(^KO1(ORDNr,"F"),D) Do KWNODE(KLNr,ORDNr,OLNr) Set R=^KOD(KLNr,"F",ORDNr,OLNr),OldAant=$P(R,D,3),TOENr=$P(R,D,27),TLNr=$P(R,D,28) For I=9,10,16 Set:OldAant $P(R,D,I)=$P(R,D,I)/OldAant Set $P(R,D,I)=$J($P(R,D,I)*Aantal,0,2) Set $P(R,D,3)=Aantal,^KOD(KLNr,"F",ORDNr,OLNr)=R Do SWNODE(KLNr,ORDNr,OLNr) Do:TOENr MODTAANT(,TOENr,TLNr,Aantal) Do:$L(LevWk) MODLEVWK(KLNr,ORDNr,OLNr,LevWk) Quit ; MODTAANT(LEVNr,TOENr,TLNr,Aantal) New R,OldAant Set:'$G(LEVNr) LEVNr=$P(^KTO1(TOENr),D) Do KWNODE^FLOWTOE(LEVNr,TOENr,TLNr) Set R=^KTO(LEVNr,TOENr,TLNr),OldAant=$P(R,D,3) For I=9,10,16 Set:OldAant $P(R,D,I)=$P(R,D,I)/OldAant Set $P(R,D,I)=$J($P(R,D,I)*Aantal,0,2) Set $P(R,D,3)=Aantal,^KTO(LEVNr,TOENr,TLNr)=R Do SWNODE^FLOWTOE(LEVNr,TOENr,TLNr) Quit ; MODLEVWK(KLNr,ORDNr,OLNr,LevWk) New R Set:'$G(KLNr) KLNr=$P(^KO1(ORDNr,"F"),D) Do KWNODE(KLNr,ORDNr,OLNr) Set R=^KOD(KLNr,"F",ORDNr,OLNr),$P(R,D,25)=LevWk,^KOD(KLNr,"F",ORDNr,OLNr)=R Do SWNODE(KLNr,ORDNr,OLNr) Quit ; ; Ophalen taalafhankelijke tekst TXT(Ref,Piece) If '$D(Piece) Set Piece=2 Quit $P($P($T(@("T"_Ref)),U,Piece),D,$F("NFDE",KT)-1) ; THStKost ;Herstockeringskosten\Frais de stockage\Herstockeringskosten\Herstockeringskosten ;