#include %occStatus FLOWOFF ;Offerte [ 11/21/2003 3:30 PM ] ; New OFFNr,KLNr,Input,Detail,DefLevT,AD,ScrolOff,Help,Totals,OffTyp,AkpVkpVerlies,KenAnk,Mirror,blVerzendWijze,blLeveringsTermijn Do INIT Set:$O(^KOFKL(KLNr,"F",OFFNr,100))'="" KenAnk=$$KennisAnkerUnRead^FLOWOFF8(,OFFNr,1) Do:$G(KenAnk)'="ANNULEER" COMMAND Quit ; COMMAND Do RESET^vhScherm For Do If Input="-" Do SORT(),CLOSE,AkpVkpVerlies^FLOW2("A",OFFNr,.AkpVkpVerlies) Quit .Set ScrolOff=1 .Do REFRESH .If USC=""!'Help Set FP=$P(UD,D,2)+1*100+1 Write @F,@F1 .Else Do HELP^FLOW .Set Help=1 .Set DL(2)="\[31~;SPEC" .If $L(Input) Set R=Input .Else Do SL^PROC .Set Input=R .If Input="COM" Do ..Do MENU .Else If Input="SPEC" Do ..Do SPEC .Else Do ..Do EXEC^vhMenu("FLOWOFFQCK",.Input) ..If R=Input D EXEC^vhMenu("FLOWOFF",.Input) ..Set R=Input .Kill A,B .Set UZ=^KOFKL(KLNr,"F",OFFNr,0)-100 .If Input="." Do LINSERT("P") Do Quit ..If $G(Mirror) Set PRNr(1)=Mirror Do AUTOOFF^FLOWOFF3 ..Kill Mirror ..Set Help=K="-" .If Input="T" Do LINSERT("T") Set Help=K="-" .If Input="M" Do LINSERT("M") Set Help=K="-" Quit .If Input="-" Quit .If Input="HELP" Set USC=^KOFKL(0,"F","USC1") .If $L(Input)=1,"ALPW"[Input Do LMODIFY(Input) .If Input="IC" Do CONTRACT Quit .If Input="C" Do PAKKET .If Input="Z" Do HADWIZ .If Input="F" Do Configurator(0) .If Input="B" Do Configurator(1) .If Input="G" Do LINSERT("G") .If Input="H" Do ^KF13 If '$P(^KOFKL(KLNr,"F",OFFNr,1),D,9) Set Input="-" Quit .If Input="I" Do LINSERT("","B") .If Input="K" Do QKORT .If Input="N" Do RPLKL .If Input="D" Do RPLPR .If Input="R" Do SORT(),FETCHDET,TOTALS(),WL^PROC .If Input="V" Do LDELETE .If Input="X" Do DELETE Set Input=$S($G(K)="-":"",1:"-") Quit .If Input=">"!(Input="<") Do SWAP(Input) .If Input="RL" Do MLRECALC(KLNr,OFFNr,Detail(@DL(1)@(6)),2) .If Input="RO" Do RECALC(OFFNr,1) .If Input="PRINT" Do PRINT .Set Input="" Quit ; INSERT(Rec,Insert,OFLNr,Show) ;Insert B=Before, A=After, E=End, R=Replace New R,PRNr,FormNr,ToNr Set $P(Rec,D,15)=$$UNIEKLNR^FLOWOFF(KLNr,OFFNr) Set OFLNr=$G(OFLNr),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 'OFLNr Set OFLNr=Detail(@DL(1)@(6)) .Do DELOFF^FLOWOFF3(KLNr,OFFNr,OFLNr) .Set PRNr=$P($G(^KOFKL(KLNr,"F",OFFNr,OFLNr)),D,2) .Kill:PRNr ^KOFKLP(PRNr,OFFNr,OFLNr) .Set ^KOFKL(KLNr,"F",OFFNr,OFLNr)=Rec,PRNr=$P(Rec,D,2) .Do BUILDOFF^FLOWOFF3(KLNr,OFFNr,OFLNr) .Do:PRNr ..Set ^KOFKLP(PRNr,OFFNr,OFLNr)=KLNr ..Do ResetVerstuurd^FLOWOFF3(OFFNr) .Do LRECALC(KLNr,OFFNr,OFLNr,Show) Quit:'Show .Do TOTALS(1),EL^PROC Quit If Insert="A" Do .If 'OFLNr Set OFLNr=100 If $D(Detail) Set OFLNr=Detail(@DL(1)@(6)),@DL(1)@(6)=@DL(1)@(6)+1 .Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)),Insert=$S('OFLNr:"E",1:"B") If Insert="B" Do Quit .If 'OFLNr Set OFLNr=Detail(@DL(1)@(6)) .Set FromNr=^KOFKL(KLNr,"F",OFFNr,0),^KOFKL(KLNr,"F",OFFNr,0)=FromNr+1 .Set ^KOFKL(KLNr,"F",OFFNr,FromNr)=Rec,ToNr=FromNr,PRNr=$P(Rec,D,2) .Do BUILDOFF^FLOWOFF3(KLNr,OFFNr,OFLNr) .Do:PRNr ..Set ^KOFKLP(PRNr,OFFNr,FromNr)=KLNr ..Do ResetVerstuurd^FLOWOFF3(OFFNr) .Do LRECALC(KLNr,OFFNr,FromNr,Show) .For Set FromNr=$O(^KOFKL(KLNr,"F",OFFNr,FromNr),-1) Do Quit:FromNr=OFLNr ..Do LSWAP(OFFNr,FromNr,ToNr,1) ..Set ToNr=FromNr .If Show Do FETCHDET,TOTALS(),WL^PROC If Insert="E" Do Quit .Set OFLNr=^KOFKL(KLNr,"F",OFFNr,0),^KOFKL(KLNr,"F",OFFNr,0)=OFLNr+1 .Set ^KOFKL(KLNr,"F",OFFNr,OFLNr)=Rec,PRNr=$P(Rec,D,2) .Do BUILDOFF^FLOWOFF3(KLNr,OFFNr,OFLNr) .Do:PRNr ..Set ^KOFKLP(PRNr,OFFNr,OFLNr)=KLNr ..Do ResetVerstuurd^FLOWOFF3(OFFNr) .Do LRECALC(KLNr,OFFNr,OFLNr,Show) .If $D(UL),$D(UD),UL'>$P(UD,D,2) Set UL=UL+1 .If Show Do TOTALS(),NIEUWV^PROC3(OFLNr) Quit ; ; Insert produkt PINSERT(Insert,Line,PRNr,Aantal,Prijs,Korting1,Korting2,LevTerm,Show) New B,R 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=$S(PRNr:PRNr,1:".") Do SCROL^KOF0(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),CheckAantal(KLNr,OFFNr,Detail(@DL(1)@(6))) Set:K="-" Input="" Quit ; ; Insert tekst TINSERT(Insert,Line,Text,Show,BlockId) New B,R 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:"\KOF11\"[(D_$P(Text,D,17)_D) .Set $P(Text,D,17)="KOF11",R=Text Else If $L(Text)!$L(BlockId) Set R="",$P(R,D,35)=D,$P(R,D,5)=Text,$P(R,D,17)="KOF11" Else Do .Do SCROL^KOF11() .Set R="" If K'="-",$O(B(100))'="" For I=1:1:35 Set R=R_$G(B(I+100))_D If $L(R) Do .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:$G(Insert)="" Insert="E" Set Line=$G(Line) Set:'$D(Show) Show=1 If $$CheckAddManLijnVHisie(OFFNr) Do .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:"\KOF1925\"[(D_$P($P(R,D,17),"#")_D) ..Set $P(Text,D,17)="KOF1925",R=Text .Else If $L(Text) Set R="",$P(R,D,35)=D,$P(R,D,5)=Text,$P(R,D,17)="KOF11" .Else Do ..Set K=$$NIEUW^FLOWMANL("KOFKL",KLNr,OFFNr) ..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) .Set:K="-" Input="" Else Set Input="" Quit ; ; Insert groeplijn GINSERT(Insert,Line,Text,Show) New B,R 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 .Quit:"\KOFGRP\"[(D_$P($P(Text,D,17),"#")_D) .Set R=$P(Text,D,17),$P(R,"#")="KOFGRP",$P(Text,D,17)=R,R=Text Else If $L(Text) Set R="",$P(R,D,35)=D,$P(R,D,5)=Text,$P(R,D,17)="KOF11" Else Do .Do SCROL^KOFGRP() .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) 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)="Tekstblok",Y(3)="Manuele lijn",Y(4)="Groeplijn" .Set Y="21\F\Selekteer lijntype",Y(0)=$O(Y(""),-1) .Do ^POP Set Type=$P("P\T\M\G",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) If Type="G" Do GINSERT(Insert) Quit ; ; Verwerk swap keys SWAP(Swap) New I,SwapRec,Refresh,Quit,FOFLNr,TOFLNr,OLRec,PRNr,BlockId,FromRef,ToRef,FromNr,ToNr Quit:'$D(Detail) Set FromRef=@DL(1)@(6) Set SwapRec=^KOFKL(KLNr,"F",OFFNr,Detail(FromRef)),Refresh=0 If Swap="<" Do .Quit:FromRef=1 .Set ToRef=FromRef-1 .Set OLRec=^KOFKL(KLNr,"F",OFFNr,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=^KOFKL(KLNr,"F",OFFNr,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(OFFNr,FromNr,ToNr) .Set Refresh=1 .Set @DL(1)@(6)=FromRef .Do TOTALS() If Swap=">" Do .Quit:FromRef=@DL(1)@(9) .Set ToRef=FromRef+1 .Set OLRec=^KOFKL(KLNr,"F",OFFNr,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=^KOFKL(KLNr,"F",OFFNr,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=^KOFKL(KLNr,"F",OFFNr,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(OFFNr,FromNr,ToNr) .Set Refresh=1 .Set @DL(1)@(6)=FromRef .Do TOTALS() If Refresh Do .Set Quit=0 .For I=1:1 Quit:'$D(Detail(I)) Do Quit:Quit ..Set:^KOFKL(KLNr,"F",OFFNr,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 Do TOTALS(1) Quit ; ; Swap offertelijnen LSWAP(OFFNr,FromNr,ToNr,OneLine) New R,FromRec,ToRec,PRNr,FPRNr,TPRNr,FPrText,TPrText,OFLNr,BlockId,OFLUNr Quit:FromNr=ToNr Set OneLine=$G(OneLine) If ToNr>^KOFKL(KLNr,"F",OFFNr,0) Set ^KOFKL(KLNr,"F",OFFNr,0)=ToNr+1 If ToNr>FromNr Set R=ToNr,ToNr=FromNr,FromNr=R Set (FromRec,ToRec,FPrText,TPrText)="" If $D(^KOFKL(KLNr,"F",OFFNr,FromNr)) Do .Merge FromRec=^KOFKL(KLNr,"F",OFFNr,FromNr) .Quit:OneLine .Set BlockId=$P(FromRec,D,18),OFLUNr=$P(BlockId,";",3),OFLNr=FromNr .If $P(BlockId,";",2)="P" Do ..Set Quit=0 ..For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr),-1) Quit:OFLNr<100 Do Quit:Quit ...Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr) ...If $P(R,D,18)'=BlockId,$P(R,D,15)'=OFLUNr Set Quit=1 Quit ...Kill FromRec ...Set FromNr=OFLNr ...Merge FromRec=^KOFKL(KLNr,"F",OFFNr,FromNr) ...Set:$P(R,D,18)'=BlockId Quit=1 If $D(^KOFKL(KLNr,"F",OFFNr,ToNr)) Do .Merge ToRec=^KOFKL(KLNr,"F",OFFNr,ToNr) .Quit:OneLine .Set BlockId=$P(ToRec,D,18),OFLUNr=$P(BlockId,";",3),OFLNr=ToNr .Set Quit=0 .For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr="" Do Quit:Quit ..Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr) ..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=OFLNr ..Merge ToRec=^KOFKL(KLNr,"F",OFFNr,ToNr) Set FPRNr=$P(FromRec,D,2),TPRNr=$P(ToRec,D,2) Do:FPRNr!TPRNr .;Quit:OneLine .Set FPrText=$$PRTEXT(KLNr,OFFNr,FromNr) .Set TPrText=$$PRTEXT(KLNr,OFFNr,ToNr,-1) Kill ^KOFKL(KLNr,"F",OFFNr,FromNr),^KOFKL(KLNr,"F",OFFNr,ToNr) If $L(FromRec) Do .Merge ^KOFKL(KLNr,"F",OFFNr,ToNr)=FromRec .Set PRNr=$P(FromRec,D,2) .Do BUILDOFF^FLOWOFF3(KLNr,OFFNr,ToNr) .If PRNr Kill ^KOFKLP(PRNr,OFFNr,FromNr) Set ^KOFKLP(PRNr,OFFNr,ToNr)=KLNr If $L(ToRec) Do .Merge ^KOFKL(KLNr,"F",OFFNr,FromNr)=ToRec .Set PRNr=$P(ToRec,D,2) .Do BUILDOFF^FLOWOFF3(KLNr,OFFNr,FromNr) .If PRNr Kill ^KOFKLP(PRNr,OFFNr,ToNr) Set ^KOFKLP(PRNr,OFFNr,FromNr)=KLNr If $L(FromRec),FPRNr Do .Quit:FPrText="" .For OFLNr=$P(FPrText,D):1:$P(FPrText,D,2) Do LSWAP(OFFNr,OFLNr-1,OFLNr,1) If $L(ToRec) Do .Quit:TPrText="" .Set OFLNr=$P(TPrText,D) .Do LSWAP(OFFNr,OFLNr,OFLNr-1,1) Quit Quit ; ; Nazicht tekstblok produkten PRTEXT(KLNr,OFFNr,OFLNr,Dir) New R,FOFLNr,TOFLNr,PRNr,BlockId,OFLUNr,TxtBlock Set Dir=$G(Dir,"+1"),(FOFLNr,TOFLNr,TxtBlock)="" Set R=$G(^KOFKL(KLNr,"F",OFFNr,OFLNr)) If Dir<0 Do .Set BlockId=$P(R,D,18) .Quit:$P(BlockId,";",2)'="P" .For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr),-1) Quit:OFLNr<100 Do Quit:PRNr ..Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2) .Set TxtBlock=$$PRTEXT(KLNr,OFFNr,OFLNr) Set:$L(TxtBlock) TxtBlock=$P(TxtBlock,D,2)_D_$P(TxtBlock,D) Set PRNr=$P(R,D,2),OFLUNr=$P(R,D,15) Else Do .If PRNr Do ..Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) ..Quit:OFLNr="" ..Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),BlockId=$P(R,D,18) ..Quit:$P(BlockId,";",2)'="P" Quit:$P(BlockId,";",3)'=OFLUNr ..Set FOFLNr=OFLNr ..For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr="" Do Quit:BlockId'=$P(R,D,18) ...Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr) Set:$P(R,D,18)=BlockId TOFLNr=OFLNr ..Set TxtBlock=FOFLNr_D_TOFLNr 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 ; LMODIFY(Input) Quit:'$D(Detail) Set K=^KOFKL(KLNr,"F",OFFNr,Detail(@DL(1)@(6))) If $P(K,D,17)="KOF11" Do WIJZIG^FLOWTEXT(Q_UGL,OFFNr,Detail(@DL(1)@(6)),$ZN) Quit Do SCROL^KOF2(Detail(@DL(1)@(6)),Input) If Input="A"!(Input="L") Do LRECALC(KLNr,OFFNr,Detail(@DL(1)@(6)),2) Do:Input="P" RecalcCommKort^FLOWMANL("KOFKL",KLNr,OFFNr,,1) If @DL(1)@(6)=@DL(1)@(9) Do EL^PROC Quit Set DL(2)="DO" Do ML^PROC Kill DL(2) Do TOTALS(1) Quit ; ; Sorteer volgens boom SORT(First,Last) Set First="" , Last = "" // best op leeg zetten want anders werkt het toch niet JCL New R,%J,OLNr,Group,PRNr,Key,Next,PakketNr,BlockId,OLUNr,LEVNr,TOENr,TLNr,KredLock,flagNewGroup Quit:$O(^KOFKL(KLNr,"F",OFFNr,100))="" ;Quit:KLNr=$$$KlantKeller ; Niet voor Keller ;Quit:KLNr=$$$KlantDedecker ; Niet voor De Decker JB Set R=^KOFKL(KLNr,"F",OFFNr,1),KredLock=$P(R,D,23) Quit:KredLock=1 Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Lock +^OF("SORT",OFFNr) Set:'$G(First) First=101 Set:'$G(Last) Last=$O(^KOFKL(KLNr,"F",OFFNr,""),-1) Set OLNr=First-1,Group=0,OLUNr="" For Set OLNr=$O(^KOFKL(KLNr,"F",OFFNr,OLNr)) Quit:OLNr>Last!'OLNr Do . Set Key="" . Set flagNewGroup=0 . Set R=^KOFKL(KLNr,"F",OFFNr,OLNr),PRNr=$P(R,D,2),BlockId=$P(R,D,18) . If ( $P(BlockId,";",2)="T" ) && ( $P(BlockId,";",3)="" ) Set Group=$I(Group) // indien een tekstlijn en geen link met product start nieuwe groep . If $P(R,D,17)["KOFGRP" Set Group=$I(Group) // indien subtotal .. nieuwe groep . If PRNr Set OLUNr=$P(R,D,15),PakketNr=$P(R,D,31) Set:'PakketNr PakketNr=999999 . If ( $P(BlockId,";",2)="P" ) && ( $L($P(BlockId,";",3)) ) Do Quit ; Indien lijnen gelinkt zijn aan andere lijnen . . Set OLUNr=$P(R,D,15),PakketNr=$P(R,D,31) Set:'PakketNr PakketNr=999999 . . Set tmpOLUNr=$P(BlockId,";",3) . . Set tmpOLNr=^OFF("IU",OFFNr,tmpOLUNr) . . Set tmpPR=$P(^KOFKL(KLNr,"F",OFFNr,tmpOLNr),"\",2) . . Set Key=$$SORTKEY^PRODUKT(tmpPR)_" "_tmpOLNr_$J(OLUNr,7) . . Merge ^HULP(%J,$J(Group,3)_$J(PakketNr,7)_" "_Key_" "_OLNr)=^KOFKL(KLNr,"F",OFFNr,OLNr) . If 'PRNr Set PakketNr=$P(R,D,31) . Else Do . . Set Key=$$SORTKEY^PRODUKT(PRNr) . . If $P($$GENTYP^HAD(PRNr),"\")="TBX" Set Key=$E(Key,1,17)_$J(OLUNr,7) . Merge ^HULP(%J,$J(Group,3)_$J(PakketNr,7)_" "_Key_" "_OLNr)=^KOFKL(KLNr,"F",OFFNr,OLNr) . If flagNewGroup Set Group=$I(Group) // nieuwe group starten na group ophoging Do DELOFF^FLOWOFF3(KLNr,OFFNr) Set:'$G(First) First=101 Set:'$G(Last) Last=$O(^KOFKL(KLNr,"F",OFFNr,""),-1) Set OLNr=First-1 For Set OLNr=$O(^KOFKL(KLNr,"F",OFFNr,OLNr)) Quit:OLNr>Last!'OLNr Do . Kill ^KOFKL(KLNr,"F",OFFNr,OLNr) Set Next="",OLNr=100 For Set Next=$O(^HULP(%J,Next)) Quit:Next="" Do . Set OLNr=OLNr+1 . Merge ^KOFKL(KLNr,"F",OFFNr,OLNr)=^HULP(%J,Next) Set ^KOFKL(KLNr,"F",OFFNr,0)=OLNr+1 Lock -^OF("SORT",OFFNr) Kill ^HULP(%J) Do BUILDOFF^FLOWOFF3(KLNr,OFFNr) Quit /* ;;;; oude code ;;; New R,%J,OFLNr,Count,PRNr,Key,Next,NewRef,OldRef,PakketNr Quit:$O(^KOFKL(KLNr,"F",OFFNr,100))="" Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Lock +^OF("SORT",OFFNr) Set:'$G(First) First=101 Set:'$G(Last) Last=^KOFKL(KLNr,"F",OFFNr,0)-1 Set OFLNr=First-1,Count=0 For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr>Last!'OFLNr Do .Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2),PakketNr=$P(R,D,31) .If 'PRNr Set Count=Count+1,Key=$P(R,D,15)_" " .Else Set Key=$$SORTKEY^PRODUKT(PRNr) Set:'PakketNr PakketNr=999999 .Set ^HULP(%J,$J(Count,3)_$J(PakketNr,7)_" "_Key_" "_OFLNr)=OFLNr Set Next="",NewRef=100 For Set Next=$O(^HULP(%J,Next)) Quit:Next="" Do .Set NewRef=NewRef+1 .Set OldRef=^(Next) .Quit:OldRef=NewRef .Do LSWAP(OFFNr,OldRef,NewRef) .Set Key=Next .For Set Key=$O(^HULP(%J,Key)) Quit:Key="" Do ..Set:^(Key)=NewRef ^(Key)=OldRef Set Next=$O(^KOFKL(KLNr,"F",OFFNr,""),-1)+1,^KOFKL(KLNr,"F",OFFNr,0)=Next Lock -^OF("SORT",OFFNr) Kill ^HULP(%J) Quit */ ; ; Verwijder een lijn MDELETE ; Mirror lijn New DelMirror Set DelMirror=1 LDELETE New I,PRNr,OFLNr,MirrorLine Set OFLNr=Detail(@DL(1)@(6)) Set K=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(K,D,2) If $P(K,D,17)="KOF11" Do DELETE^FLOWTEXT(Q_UGL,OFFNr,OFLNr) Quit If $G(DelMirror) Set K="V" Else Set K=$$KEYL^vhINP("FLOWOFF","LDELETE") Quit:K'="V" Do DELLINE(OFFNr,OFLNr) Do TOTALS() Do DELETE^PROC3 Do RecalcCommKort^FLOWMANL("KOFKL",KLNr,OFFNr,,1) Do:PRNr . Do KSTBXKWK^FLOWOFF4(KLNr,OFFNr,,1) . Set MirrorLine=$$MirrorLine(KLNr,OFFNr,PRNr) . Quit:'MirrorLine . Quit:'$$DelMirror^PRODUKT(PRNr) . For I=1:1 Quit:'$D(Detail(I)) Set:Detail(I)=MirrorLine @DL(1)@(6)=I . If @DL(1)@(6)<@DL(1)@(7) Set @DL(1)@(7)=@DL(1)@(6) . Else If @DL(1)@(6)>(@DL(1)@(4)+@DL(1)@(7)-1) Set @DL(1)@(7)=@DL(1)@(6)+1-@DL(1)@(4) . Do WL^PROC . Do:Detail(@DL(1)@(6))=MirrorLine MDELETE Quit ; ; Verwijder volledig de offerte DELETE Do DL^PROC Set K=$$ASKL^vhINP("FLOWOFF","DELETE") If K'="V" Do EL^PROC Quit Do DELOBJ(OFFNr) Quit ; DELLINE(OFFNr,OFLNr) Do DELLINE^FLOWOFF3(OFFNr,OFLNr) Quit ; DELOBJ(OFFNr) Do DELOBJ^FLOWOFF3(OFFNr) Quit ; ; Paketten PAKKET Do ^KOFPAK Quit ; ; Burbidge DEUR Do SERIE^DEUR(KLNr,"","CBDEUR^FLOWOFF") Quit ; CBDEUR(PRNr) Do IPROD(PRNr) Quit ; IPROD(PRNr) Do PINSERT("","",PRNr) Set FP=$P(UD,D,2)+1*100+1 Write @F,@F1 Quit ; ; Halux wizard HADWIZ New R,PRNr,Aantal,OFLNr,Data,Next Set (PRNr,Aantal)="" If $D(Detail) Set OFLNr=Detail(@DL(1)@(6)),R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2) Set:PRNr Aantal=$P(R,D,3) Do CREATE^HADWIZ(KC,PRNr,Aantal,KV,"OFF",.Data) Set Next="" For Set Next=$O(Data(Next)) Quit:Next="" Do . Set R=Data(Next),PRNr=$P(R,D),Aantal=$P(R,D,2) . If PRNr,Aantal Do PINSERT("","",PRNr,Aantal) Quit Configurator(WijzigProduct) Quit:(WijzigProduct)&&('$Data(Detail)) New R,PRNr,BesteldeProducten,BesteldeProductenIterator,BesteldProduct,Parameters Set (PRNr,BesteldeProducten,Puntjes)="" If (WijzigProduct) { New Familie,Variant Set (Familie,Variant) = "" Set OFLNr=Detail(@DL(1)@(6)),R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2) Set:PRNr Aantal=$P(R,D,3) Set Parameters = ##class(CHUI.Flow.ConfiguratorHelper).MaakWijzigenParameters(PRNr, ##class(APPS.VKP.Maatwerk.enu.DocumentType).Offerte(), OFFNr, KLNr, OFLNr, .Status) } Else { Set Parameters = ##class(CHUI.Flow.ConfiguratorHelper).MaakToevoegenParameters(##class(APPS.VKP.Maatwerk.enu.DocumentType).Offerte(), OFFNr, KLNr, .Status) } If ($$$ISERR(Status)) { Do DISPONLY^vhTXTPOP("Opslaan parameterobject niet gelukt~"_$$ParseStatus^vhLib(Status),"Fout!") Quit } Do ##class(CHUI.Flow.ConfiguratorHelper).StartConfiguratorMet(Parameters) Set BesteldeProducten = ##class(CHUI.Flow.ConfiguratorHelper).GeefBesteldeProducten(##class(APPS.VKP.Maatwerk.enu.DocumentType).Offerte(), OFFNr) If (WijzigProduct) { Do MDELETE } New GeselecteerdeLijn Set BesteldeProductenIterator = ##class(TECH.ListIterator).%New(BesteldeProducten.Lijst) While (BesteldeProductenIterator.HasNext()) { Set BesteldProduct = BesteldeProductenIterator.Next() Do PINSERT("","",BesteldProduct.GeefPRNr(),BesteldProduct.GeefAantal()) Set OFLNr=Detail(@DL(1)@(6)) Set $Piece(^KOFKL(KLNr,"F",OFFNr,OFLNr),"\",5) = BesteldProduct.GeefProjectReferentie() } Do BesteldeProducten.%DeleteId(BesteldeProducten.%Id()) Do Parameters.%DeleteId(Parameters.%Id()) Quit ; CONTRACT New PRNr Set SortKey="" For Set SortKey=$O(SortKey(SortKey)) Quit:SortKey="" Set PRNr=SortKey(SortKey) Do:PRNr IPROD(PRNr) Set Input="-" Quit ; ; Maximum leverweek bij contract MAXWEEK(OFFNr) New R,MaxWeek,KLNr,PRNr,LevTerm,OFLNr Set MaxWeek=0,OFLNr=100 Set KLNr=$P(^KOFKL1(OFFNr,"F"),D) For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr="" Do .Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2) .Quit:'PRNr .Set:$P(R,D,25)>MaxWeek MaxWeek=$P(R,D,25) Quit MaxWeek ; ; Geldig tot voor een contract GELDTOT(OFFNr) New R,MaxWeek,GeldVan,GeldTot,KLNr Set KLNr=$P(^KOFKL1(OFFNr,"F"),D),R=^KOFKL(KLNr,"F",OFFNr,1),GeldTot=$P(R,D,16) If GeldTot="" Do .Set GeldVan=$P(R,D,2),MaxWeek=$$MAXWEEK(OFFNr) .Set GeldTot=$$CALCDATE^vhDTyp($$INTDATE^vhDTyp(GeldVan),"W",26+MaxWeek,"LD")-2 Else Set GeldTot=$$INTDATE^vhDTyp(GeldTot) Quit GeldTot ; ; Kwantumkorting bij handel QKORT Quit:'$D(Detail) For Do Quit:K="-" .Do SCROL^KOFKYW(Detail(@DL(1)@(6))) .Set FP=$P(UD,D,2)+1*100+1 Write @F,@F1 .Quit:K="-" .Do TOTALS(1) .If @DL(1)@(6)=@DL(1)@(9) Do EL^PROC Set K="-" Quit .Set DL(2)="DO" Do ML^PROC Kill DL(2) Quit ; ; Sluit offerte CLOSE New R,Closed Quit:'$D(^KOFKL(KLNr,"F",OFFNr)) Set R=^KOFKL(KLNr,"F",OFFNr,1),Closed=$P(R,D,22) Quit:Closed Do CREATOR Do ToegangVHisie(OFFNr) Set R=^KOFKL(KLNr,"F",OFFNr,1),$P(R,D,22)=1,^KOFKL(KLNr,"F",OFFNr,1)=R Quit ; ; Invullen creator en klassementref. CREATOR New R,OffDat,IntPers,DevNr,KlasRef,Created,Closed,UserInit Set R=^KOFKL(KLNr,"F",OFFNr,1) Set OffDat=$P(R,D,2),Created=$P(R,D,8),IntPers=$P(Created,"#"),Closed=$P(R,D,22),KlasRef=$P(R,D,24) If 'Closed,Created=""!(KlasRef="") Do .Quit:'$O(^KOFKL(KLNr,"F",OFFNr,100)) .Set DevNr=$$IO^cQ5,UserInit=$G(QU) .If $L(UserInit) Set IntPers=$$USERID^vhUSER(UserInit) .Else Set IntPers=$P($$DEVUSER^vhUSER(DevNr),";") .Set:Created="" Created=IntPers_"#"_DevNr_"#"_$H .Do:KlasRef="" ..If ";"_$$TGROEP^vhUSER("EIGENKLAS")_";"[(";"_IntPers_";") Set KlasRef=IntPers ..Else Set KlasRef="DIV" ..Set KlasRef=KlasRef_"#"_$H_"#"_OFFNr .Set $P(R,D,8)=Created,$P(R,D,24)=KlasRef,^KOFKL(KLNr,"F",OFFNr,1)=R .;Do OFFERTE^FLOWKLAS(OFFNr) Quit ; RPLKL Goto RPLKL^FLOW ; RPLPR New R,PR Quit:'$D(Detail) Set R=^KOFKL(KLNr,"F",OFFNr,Detail(@DL(1)@(6))),PR=$P(R,D,2) Quit:'PR Goto RPLPR^FLOW ; ; Herrekenen lijn LRECALC(KLNr,OFFNr,OFLNr,Display,KortTyp) New K,R,Rec,BrutoPr,OffDat,OffMunt,PRNr,Aantal,Prijs,GrOrde,PrRec New Netto,Bruto,Eenheid,LevTerm,OffTyp,NoSa 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=^KOFKL(KLNr,"F",OFFNr,1),OffDat=$P(R,D,2),NoSa=$$NoSa(KLNr,OFFNr) Set OffMunt=$P(R,D,18),OffTyp=$P(R,D,25),BrutoPr=$P(R,D,27) Set Rec=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(Rec,D,2) Do:PRNr .Set Aantal=$P(Rec,D,3) .If Aantal Set $P(Rec,D,48)=$$GetFSCCodeEnGewicht^PRODUKT2(PRNr,Aantal),^KOFKL(KLNr,"F",OFFNr,OFLNr)=Rec .If KlMunt'="MTL",KlMunt'=OffMunt Do Quit ..If Display Set R=$$TXTPOP^FLOW("RECALC","","KlMunt","""offerte""","OffMunt") .Quit:$P(Rec,D,26)="*" Quit:$P(Rec,D,26)="=" .Set Aantal=$P(Rec,D,3),LevTerm=$P(Rec,D,25),SpecPrys=$P(Rec,D,26),GrOrde=$E($P(Rec,D,21)) .Set Korting=$P(Rec,D,7),Korting1=$P(Korting,"#"),Korting2=$P(Korting,"#",2) .Do STORE^vhTERMINA() .Set PrRec=$$KlantPrijs^KPRIJS(KLNr,PRNr,NoSa,OffDat,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),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 .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 OffTyp="C"!(OffTyp="A") Set OptKort="=" .Set $P(Rec,D,26)=OptKort .Set ^KOFKL(KLNr,"F",OFFNr,OFLNr)=Rec .If Display Do EL^PROC .Do KSTBXKWK^FLOWOFF4(KLNr,OFFNr,OFLNr,Display) Do RecalcCommKort^FLOWMANL("KOFKL",KLNr,OFFNr,,Display) Quit ; ; Herrekenen lijn via menu MLRECALC(KLNr,OFFNr,OFLNr,Display) New Rec,PRNr,TempRec Set (Rec,TempRec)=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(Rec,D,2) Quit:'PRNr If $P(Rec,D,26)'="*",$P(Rec,D,26)'="=" Kill TempRec Else Quit:'$$TXTPOP^FLOW("LRECALC") Do .Kill:$P(Rec,D,26)="*" TempRec .Set $P(Rec,D,26)="",^KOFKL(KLNr,"F",OFFNr,OFLNr)=Rec Do LRECALC(KLNr,OFFNr,OFLNr,$G(Display)) If $D(TempRec) Do .Set Rec=^KOFKL(KLNr,"F",OFFNr,OFLNr) .Quit:$L($P(Rec,D,26)) Quit:$P(Rec,D,26)=$P(TempRec,D,26) .Set $P(Rec,D,26)=$P(TempRec,D,26),^KOFKL(KLNr,"F",OFFNr,OFLNr)=Rec .Do:Display EL^PROC Do TOTALS(1) Quit ; ; Herreken een offerte RECALC(OFFNr,Display) New %TC,R,OFLNr,KLNr,KlMunt,IsHandel,OffMunt Quit:'$D(^KOFKL1(OFFNr)) Set R=^KOFKL1(OFFNr,"F") Quit:$L($P(R,D,2)) Set Display=$G(Display),KLNr=$P(R,D),OFLNr=100 Set OffMunt=$P(^KOFKL(KLNr,"F",OFFNr,1),D,18) Do INITKL If KlMunt'="MTL",KlMunt'=OffMunt Do Quit .If Display Set R=$$TXTPOP^FLOW("RECALC","","KlMunt","""offerte""","OffMunt") Do ADD^vhLock("^KOFKL(KLNr,""F"",OFFNr)") If '%TC Do LDISP^vhLock("^KOFKL(KLNr,""F"",OFFNr)","Offerte "_OFFNr) Quit If Display Set DL(2)="HO" Do ML^PROC Kill DL(2) For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr="" Do .Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr) .If $P(R,D,2),$P(R,D,26)'="*",$P(R,D,26)'="=" Do LRECALC(KLNr,OFFNr,OFLNr,Display) .If Display Set DL(2)="DO" Do ML^PROC Kill DL(2) Do REMOVE^vhLock("^KOFKL(KLNr,""F"",OFFNr)") Quit ; REFRESH If sRT=1 Write @F11,@F1 Xecute ^KOFKL(0,"F",0) If sRT<$P(UD,D) Xecute ^KOFKL(0,"F","UT1") Do ^KF12 If sRT<($P(UD,D,2)+1) Do WL^PROC DO RESET^vhScherm Quit ; ; Call back voor lijsdefinitie CB(K,OFLNr) New R Set R=^KOFKL(KLNr,"F",OFFNr,1),OffTyp=$P(R,D,25) Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr) If $P(R,D,17)="KOF11" Quit 3 If $P($P(R,D,17),"#")="KOFGRP" Quit 2 If $P(R,D,2)'?4.7N Quit 1 Quit "" ; ; Ophalen detail FETCHDET New OFLNr,Count Kill Detail,@DL(1)@(7),@DL(1)@(9) Set OFLNr=100,Count=0 For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr="" Do .Set Count=Count+1,Detail(Count)=OFLNr .Set:UL'>$P(UD,D,2) UL=UL+1 Quit ; TOTALS(Show) New I,R,OFLNr,AlgTot,SubTot,Temp,AlgMunt,SubMunt,Munt,KlMunt,AlgBedr,SubBedr,KlantPar,Pariteit,Land Kill Totals Set OFLNr=100,(SubTot,AlgTot)=0,(SubMunt,AlgMunt)="",Land=$$LAND^vhRtn1($P(^KKL(^KK1(KLNr),0),D,8)) Set KlMunt=$S(KV="MTL":$$LANDMUNT^KLANT(Land),1:KV) Set KlantPar=$$MUNT^vhRtn1(KlMunt,,12) For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:OFLNr="" Do .Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),(SubBedr,AlgBedr)=$P(R,D,9),Munt=$P(R,D,22) .If $L(Munt) Do ..Set:SubMunt="" SubMunt=Munt ..If Munt'=SubMunt Do ...Set Pariteit=$$MUNT^vhRtn1(Munt,,12) ...Set SubBedr=$J(SubBedr*Pariteit,0,2),SubBedr=$J(SubBedr/KlantPar,0,2) ...If SubMunt'=KlMunt Do ....Set Pariteit=$$MUNT^vhRtn1(SubMunt,,12) ....Set SubTot=$J(SubTot*Pariteit,0,2),SubTot=$J(SubTot/KlantPar,0,2),SubMunt=KlMunt ..Set SubTot=SubTot+SubBedr ..Set:AlgMunt="" AlgMunt=Munt ..If Munt'=AlgMunt Do ...Set Pariteit=$$MUNT^vhRtn1(Munt,,12) ...Set AlgBedr=$J(AlgBedr*Pariteit,0,2),AlgBedr=$J(AlgBedr/KlantPar,0,2) ...If AlgMunt'=KlMunt Do ....Set Pariteit=$$MUNT^vhRtn1(AlgMunt,,12) ....Set AlgTot=$J(AlgTot*Pariteit,0,2),AlgTot=$J(AlgTot/KlantPar,0,2),AlgMunt=KlMunt ..Set AlgTot=AlgTot+AlgBedr .Quit:$P($P(R,D,17),"#")'="KOFGRP" .If $P($P(R,D,17),"#",2) Set Totals(OFLNr)=SubTot_D_SubMunt,SubTot=0,SubMunt="" .Else Set Totals(OFLNr)=AlgTot_D_AlgMunt,(SubTot,AlgTot)=0,(SubMunt,AlgMunt)="" Quit:'$G(Show) For I=@DL(1)@(7):1:@DL(1)@(7)+@DL(1)@(4)-1 Do .Quit:'$D(Detail(I)) Quit:'$D(Totals(Detail(I))) .If I=@DL(1)@(6) Do EL^PROC Quit .Set Temp=@DL(1)@(6),@DL(1)@(6)=I Do DL^PROC Set @DL(1)@(6)=Temp Quit ; PRINT Set FP=USM*100+1 W @F,@F1 Do SORT(),FETCHDET,TOTALS(),WL^PROC Do EXTERN^DCPRINT("A",OFFNr,"","",1) Kill ^KOB(OFFNr,"F") Do ToegangVHisie(OFFNr) Quit ; TRANS(OFFNr) Do TRANS^FLOWOFF4($G(OFFNr)) Quit ; ToegangVHisie(OFFNr) New R,ToegangVHisie,OFFNrs,KLNr If $G(OFFNr) Do . Set KLNr=$P(^KOFKL1(OFFNr,"F"),D),R=^KOFKL(KLNr,"F",OFFNr,1),ToegangVHisie=$P(R,D,19) . If '$$CheckModStatusToegangVHisie(OFFNr) Do Quit . . Quit:'ToegangVHisie . . Set $P(R,D,19)="",^KOFKL(KLNr,"F",OFFNr,1)=R . . Do ADD^vhScherm(1,24) . Set:'ToegangVHisie OFFNrs(OFFNr)=$$^vhTXTPOP("FLOWOFF","ToegVHisie","",OFFNr,$P(^KKL(^KK1(KLNr),0),D,2)) Else Do . Set OFFNr="" . For Set OFFNr=$O(OFFNr(OFFNr)) Quit:OFFNr="" Set:$$CheckModStatusToegangVHisie(OFFNr) OFFNrs(OFFNr)=1 . If $D(OFFNrs),'$$^vhTXTPOP("FLOWOFF","ToegVHisie2") Kill OFFNrs Do:$D(OFFNrs) . Set OFFNr="" . For Set OFFNr=$O(OFFNrs(OFFNr)) Quit:OFFNr="" Do . . Quit:'OFFNrs(OFFNr) . . Set KLNr=$P(^KOFKL1(OFFNr,"F"),D),R=^KOFKL(KLNr,"F",OFFNr,1) . . Set $P(R,D,19)=1,^KOFKL(KLNr,"F",OFFNr,1)=R . Do ADD^vhScherm(1,24) Quit ; ; Controle op toevoegen manuele lijnen i.v.m. VHisie CheckAddManLijnVHisie(OFFNr) New R,ToegangVHisie,KLNr,Ok Set KLNr=$P(^KOFKL1(OFFNr,"F"),D),R=^KOFKL(KLNr,"F",OFFNr,1),ToegangVHisie=$P(R,D,19) Set Ok=1 Set:ToegangVHisie Ok=$$^vhTXTPOP("FLOWOFF","ToegVHisie3","",OFFNr,$P(^KKL(^KK1(KLNr),0),D,2)) Quit Ok ; ; Controle op de toegang tot VHisie i.v.m. manuele lijnen CheckModStatusToegangVHisie(OFFNr,ToegangVHisie) New R,KLNr,Ok Set Ok=1 If OFFNr Set KLNr=$P($G(^KOFKL1(OFFNr,"F")),D) Do:KLNr . Set:'$D(ToegangVHisie) R=^KOFKL(KLNr,"F",OFFNr,1),ToegangVHisie=$P(R,D,19) . Set OFFLNr=100 . For Set OFFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFFLNr)) Quit:OFFLNr'?3.4N Do Quit:'Ok . . Set R=^KOFKL(KLNr,"F",OFFNr,OFFLNr) . . Quit:$P($P(R,D,17),"#")'="KOF1925" . . ; Manuele lijn . . Set Ok=$S('ToegangVHisie:"",1:$$^vhTXTPOP("FLOWOFF","ToegVHisie4","",OFFNr,$P(^KKL(^KK1(KLNr),0),D,2))) Quit Ok ; INIT New R,VerzendWijze,LandCode,PostCode Set OFFNr=UR,KLNr=KC Set VerzendWijze=$$DEFAULT^KLVERZW(,KLNr) Set LandCode=$$LAND^vhRtn1(KLNr,"K") Set PostCode=$P(^KKL(^KK1(KLNr),0),D,6) Set blVerzendWijze=##class(DOM.VKP.VerzendWijze).%New(KLNr,VerzendWijze,LandCode,PostCode) Set blLeveringsTermijn=##class(DOM.VKP.LeveringsTermijn).%New(,blVerzendWijze) Do INITKL Do INIT^PROC("FLOWOFFADP","AD") Set AD(2,1)=^LD("L","FLOWOFFADM") Set AD(2,2)=^LD("L","FLOWOFFADG") Set AD(2,3)=^LD("L","FLOWOFFADT") Set FP=UD*100+1 Write @F,@F1 Do FETCHDET,TOTALS(),WL^PROC Set Input="",Help=1 If $O(^KOFKL(KLNr,"F",OFFNr,100))="" Set Input=".",Help=0 Set:$D(AutoInp) Input=AutoInp Set R=^KOFKL(KLNr,"F",OFFNr,1),OffTyp=$P(R,D,25) Quit ; INITKL New sFL Do FETCHKL^UTILI(KLNr,"sFL") Set KlMunt=$P(sFL(0),D,11),IsHandel=$$IsHandel^KLANT5(KLNr) Set:KlMunt="" KlMunt=$$FADEF^vhRtn1() Quit ; MENU Do CALL^vhMenu("FLOWOFF") Quit ; SPEC Do CALLSPEC^vhMenu(AD(3)+AD(6)-1_";80","FLOWOFFQCK","") Quit ; UNIEKLNR(KLNr,OFFNr) New OFLUNr Set KLNr=$G(KLNr),OFFNr=$G(OFFNr) Set:'KLNr KLNr=$P(^KOFKL1(OFFNr,"F"),D) Set OFLUNr=$G(^KOFKL(KLNr,"F",OFFNr,4)) Set:'OFLUNr OFLUNr=1 Set ^KOFKL(KLNr,"F",OFFNr,4)=OFLUNr+1 Quit OFLUNr*100 ; AUTO(KLNr,OffTyp,Refer) Goto AUTO^FLOWOFF3 ; MAILLNK(KLNr,SortKey,OffTyp) New OFFNr Set OFFNr=$$AUTO(KLNr,OffTyp),AutoInp="IC" Do FOFE^KF9 Quit ; BUILDOBJ(KLNr,OffTyp,Refer,PRNr) Quit $$BUILDOBJ^FLOWOFF3(KLNr,OffTyp,Refer,.PRNr) ; ; Controle op grote aantallen CheckAantal(KLNr,OFFNr,OFLNr) New I,R,PRNr,Aantal,OFLUNr,IsStock,GemWeekVk,GemFysStock,KortTxt,TxtLoc,ButLoc,AddTxt,Actie,Weken,Taal,DLTemp Set R=^KOFKL(KLNr,"F",OFFNr,OFLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),OFLUNr=$P(R,D,15) Do:Aantal>0 . Set Taal=$P(^KKL(^KK1(KLNr),0),D,9) . Set R=^KPR(PRNr,1),IsStock=$P(R,D,20) . Quit:'IsStock ; Geen stock-product . Set GemWeekVk=$P($P(R,D,23),"#"),GemFysStock=$P($P(R,D,24),"#",2) . Set R=^KPR(PRNr,0),KortTxt=$P(R,D) . If 'GemWeekVk,'GemFysStock Quit ; Er is nog geen verkoop op dit product . If Aantal'>GemWeekVk,Aantal'>GemFysStock Quit . If 'GemWeekVk,Aantal'>GemFysStock Quit . If 'GemFysStock,Aantal'>GemWeekVk Quit . Set TxtLoc(1)="Het Aantal "_$$EXTNUM^vhDTyp(Aantal,0,".",0)_" voor product "_KortTxt . If GemWeekVk Set TxtLoc(2)="overschrijdt de gemiddelde weekverkoop van "_$$EXTNUM^vhDTyp(GemWeekVk,0,".",0) . Else Set TxtLoc(2)="overschrijdt de gemiddelde voorraad van "_$$EXTNUM^vhDTyp(GemFysStock,0,".",0) . Set TxtLoc(3)="U kan onderstaande tekst toevoegen aan het product:",TxtLoc(4)="" . Set Weken=$$LEVWK^PRODUKT4(PRNr,1,,0)-$h\7 . Set AddTxt(5)=$$TXT("chkAant1",,Taal),AddTxt(6)=$$TXT("chkAant2",,Taal) . Set AddTxt(7)=$$TXT("chkAant3",,Taal),AddTxt(8)=$$TXT("chkAant4",,Taal)_Weken_$$TXT("chkAant4",$S(Weken=1:3,1:4),Taal) . Set AddTxt(9)=$$TXT("chkAant5",,Taal) . Merge TxtLoc=AddTxt . Set ButLoc(1)="Ok",ButLoc(2)="Tekst toevoegen&1",TxtLoc="TxtLoc",ButLoc="ButLoc" . Set Actie=$$WILD^vhTXTPOP("","",.TxtLoc,.ButLoc) . Quit:'Actie . Set R="",$P(R,D,17,18)="KOF11"_D_$P($H,",",2)_";P;"_OFLUNr_";",$P(R,D,36)="" . For I=5:1:9 Do:$D(AddTxt(I)) . . Set $P(R,D,5)=AddTxt(I) . . Do INSERT(R,"A",OFLNr,1) Quit ; ; Ophalen van de lijn met het spiegelproduct van een bepaald product MirrorLine(KLNr,OFFNr,PRNr) New OFLNr,MirrorPRNr Set MirrorPRNr=$$GetMirror^PRODUKT(PRNr) Do:MirrorPRNr . Set OFLNr=100 . For Set OFLNr=$O(^KOFKL(KLNr,"F",OFFNr,OFLNr)) Quit:'OFLNr Quit:$P(^KOFKL(KLNr,"F",OFFNr,OFLNr),D,2)=MirrorPRNr Quit $G(OFLNr) ; NoSa(KLNr,OFFNr) New NoSa Set NoSa="N" Do:$P(^KOFKL(KLNr,"F",OFFNr,1),D,14) . Set NoSa="S" . If $$IsActief^KLPUTZ2("S")="B",'$$IsActief^KLPUTZ2("S",QU(1)) Set NoSa="N" ; Schaduw is beperkt actief Quit NoSa ; ; Ophalen taalafhankelijke tekst TXT(Ref,Piece,Taal) Set Piece=$G(Piece,2) Set:$G(Taal)="" Taal="N" Quit $P($P($T(@("T"_Ref)),U,Piece),D,$F("NFDE",Taal)-1) ; TchkAant1 ;Het gevraagde aantal overschrijdt het\Le nombre demandé, dépasse le niveau\Het gevraagde aantal overschrijdt het\Het gevraagde aantal overschrijdt het TchkAant2 ;gemiddelde voorraadniveau.\de stock moyen.\gemiddelde voorraadniveau.\gemiddelde voorraadniveau. TchkAant3 ;Gelieve rekening te houden met een\Veuillez tenir compte d'un délai de\Gelieve rekening te houden met een\Gelieve rekening te houden met een TchkAant4 ;mogelijke levertermijn van \livraison éventuel de \mogelijke levertermijn van \mogelijke levertermijn van ; week.\ semaine.\ week.\ week.; weken.\ semaines.\ weken.\ weken. TchkAant5 ;Voor meer info, contacteer ons.\Pour plus d'informations, contactez-nous.\Voor meer info, contacteer ons.\Voor meer info, contacteer ons.