FLOW ;Toelevering, offerte, order, bon [ 12/08/2003 11:19 AM ] ; ; Global = hoofdbestand ; IGlobal = indexbestand ; Exist = het ingegeven nummer moet bestaan ; NoSelNr = de niet toegelaten nummers doorgegeven via .local ; DERDENr = DERDENr("K")=KLNr (voor een bepaalde klant) ; DERDENr("L")=LEVNr (voor een bepaalde leverancier) ; Men kan bvb alle toeleveringen van een bepaalde leverancier voor een bepaalde klant opvragen ; DERDENr("N")=1 (nummer vragen via ASK) ; MultSel = mogelijkheid om meerdere nummers te selekteren ; ChkWMS = "" geen controle ; 0 niet in het WMS ; 1 in het WMS ; 2 controle bon in ^KUL of in ^ORDW indien Global="KUL" ; Orgalux = "" geen beperking ; 0 alles wat geen orgalux is ; 1 enkel orgalux ; SELECT(Global,IGlobal,Exist,NoSelNr,DERDENr,MultSel,ChkWMS,Orgalux) New I,R,Document,Prompt,Komm1,Komm2,Limit,LEVNr,%J,GoSask,WMSStat,KLNr If Global="KFA" Quit $$SELECT^FLOWSELF(.NoSelNr,.DERDENr,.MultSel) If Global="KFAP" Quit $$SELECT^FLOWSELP(.NoSelNr,.DERDENr,.MultSel) Set Exist=$S($G(sScr("VTW")):1,1:$G(Exist)),MultSel=$G(MultSel),ChkWMS=$G(ChkWMS),Orgalux=$G(Orgalux),%J=$$%J^vhRtn1() If Global="KTO" Set Document="Toelevering",Limit="200000\299999" If Global="KOFF" Set Document="Offerte",Limit="500000\599999" If Global="KOFKL" Set Document="Offerte",Limit="500000\599999" If Global="KOD" Set Document="Order",Limit="100000\199999" If Global="KUL" Set Document="Uitlevering",Limit="300000\399999" If $D(DERDENr),'$G(DERDENr("N")) Goto SASK Set Prompt=Document_"nummer : " If 'Exist Do .Set Komm1="A=automatisch nummer" .If Global="KOD" Set Komm1="A=auto num (AC=contr, AK=kgb, AA=afr, AM=monst, AP=prof, AT=Transf)" If Global="KTO" Do .New R,LEVNr .Set R=Document_"nummer of AB-nummer" .Set LEVNr=$G(DERDENr("L")) .If LEVNr Do ..Set R=R_" van "_$P(^KLE(^KL1(LEVNr),0),D,2) .Set R=R_$S('Exist:", "_Komm1,1:"") .Set Komm1=R Set Komm2="page up (SEL) voor lijst" If Global="KTO" Set:'$G(DERDENr("N")) Komm2=Komm2_", L=leverancier, B=AB-nummer van bepaalde leverancier" Else Set Komm2=Komm2_", K=klant" If $G(Komm1)="" Set Komm1=Komm2,Komm2="" SASK Kill GoSask If '$D(DERDENr)!$G(DERDENr("N")) Do Goto SASK:$G(GoSask) .Set FP=1901 Write @F,@F1 .Set R=$$UPCASE^vhRtn1($$ASK^vhINP(Prompt,$S(Global="KTO":12,1:6),"",Komm1,Komm2)) .Do:Global="KTO" ..If R?6N4.5A Set R=+R Quit ..If R?1A2.5A Set R=$$ToeleveringViaDossierNummer(R) .If 'zb,$L(R) Quit:'$G(DERDENr("N"))!'R Do Quit ..Set R=$$SHORTNUM(Global,IGlobal,R) ..If R="" Set GoSask=1 Quit ..Set DERDENr=DERDENr($S(Global="KTO":"L",1:"K")) ..Set:'$$DATA("H",R) GoSask=1 .If '$G(DERDENr("N")) Do ..Do SORT($TR(IGlobal,1,2)) ..Set R=$$LIST(,.NoSelNr,MultSel,ChkWMS,Orgalux) .If $G(DERDENr("N")) Do DERDENR .Set:R="-" GoSask=1 Else Do .Set:Global'="KTO" (KC,DERDENr)=DERDENr("K") Set:Global="KTO" (LC,DERDENr)=DERDENr("L") .Do:'DERDENr SORT($TR(IGlobal,1,2)) .Set R=$$LIST(.DERDENr,.NoSelNr,MultSel,ChkWMS,Orgalux) .Kill:R="-" KC,LC If R="A",Exist Goto SASK If R="K" Do Goto SASK:R="-" .If Global="KTO" Set R="-" Quit .Set R=$$SELECT^KLANT6(1,"",Document_" van klant : ") .Set:R="." R="-" .If R'="-" Set KC=R,R=$$LIST(R,.NoSelNr,MultSel,ChkWMS,Orgalux) .If R="-" Kill KC If R="L" Do Goto SASK:R="-" .If Global'="KTO" Set R="-" Quit .Set R=$$SELECT^LEVER(1,"",Document_" van leverancier : ") .Set:R="." R="-" .If R'="-" Set LC=R,R=$$LIST(R,.NoSelNr,MultSel,ChkWMS,Orgalux) .If R="-" Kill LC If Global="KTO",R="B" Else Goto SQUIT:MultSel If R?.N,R'>99999 Set R=$$SHORTNUM(Global,IGlobal,R) Goto SASK:'R If R?.N,Global="KUL",ChkWMS=2,$D(^ORDW("D",R)) Do Goto SQUIT:R .Set WMSStat=$P(^ORDW("D",R),D,20) .If WMSStat="K" Set R=0 Quit .Quit:WMSStat'="B" Quit:'$P(^KU1(R,"F"),D,2) .Set KLNr=$P(^ORDW("D",R),D) .Set:'$$TXTPOP("BONGEFACTUREERD","",R,$P(^KKL(^KK1(KLNr),0),D,2)) R=0 If Global="KTO",R="B" Set R=$$ABNR(.DERDENr,Exist,MultSel,ChkWMS,Orgalux) Goto SASK:R="-" If R'="-",Exist,'$$DATA("I",R) Goto SASK If R="A"!(R="-") Goto SQUIT If Global="KOD","\AA\AC\AK\AM\AP\AT\"[(D_R_D) Goto SQUIT If R'<$P(Limit,D),R'>$P(Limit,D,2) Goto SQUIT If Global="KTO" Do Kill LEVNr .Set LEVNr="",R=$$UPTRIMAN^vhRtn1(R) .For Set LEVNr=$O(^KTO4(LEVNr)) Quit:LEVNr="" If $P($O(^KTO4(LEVNr,R_D)),D)=R Set R=$P($O(^KTO4(LEVNr,R_D)),D,2) Quit If R'<$P(Limit,D),R'>$P(Limit,D,2),$D(@($$GLOREF("I",R))) Goto SQUIT Goto SASK SQUIT Kill ^HULP($J),^HULP(%J) Set FP=1901 Write @F,@F1 If R,$L(ChkWMS) Do Goto SASK:'R .If Global="KTO" For I=1:1:$L(R,D) If +$$CHECKWMS($P(R,D,I),,,,,,,,1)'=ChkWMS Set R=0 Quit:'R .If Global="KOD" For I=1:1:$L(R,D) If +$$CHECKWMS(,,$P(R,D,I))'=ChkWMS Set R=0 Quit:'R Quit R ; DERDENR Set:Global'="KTO" (KC,DERDENr)=DERDENr("K") Set:Global="KTO" (LC,DERDENr)=DERDENr("L") Set R=$$LIST(.DERDENr,.NoSelNr,MultSel,ChkWMS,Orgalux) Kill:R="-" KC,LC Quit ; LIST(DERDENr,NoSelNr,MultSel,ChkWMS,Orgalux) New LD,DL,Count,RefNr,Bold,MultNrs New:'$G(DERDENr) DERDENr Set MultSel=$G(MultSel),ChkWMS=$G(ChkWMS),Orgalux=$G(Orgalux),MultNrs=D Kill ^HULP($J) Do INIT^PROC("FLOWSEL"_$P("K",D,$D(DERDENr)>0)_$P("\M",D,MultSel+1),"LD") Set LD(8)="Selecteer "_$C($A($E(Document))+32)_$E(Document,2,99) If MultSel Set LD(8)=LD(8)_$S("\KTO\KUL\"[(D_Global_D):"(en)",1:"(s)") If $D(DERDENr) Do .Set LD(8)=LD(8)_" van "_$S(Global="KTO":"leverancier",1:"klant")_" : " .Set LD(8)=LD(8)_$P(@($$GLOREF("D","DERDENr")),D,2) Set:Orgalux LD(8)=LD(8)_" (Orgalux)" If 'Exist Set LD(8)=LD(8)_" - A=automatisch nummer" Set LD(8)=$E(LD(8),1,80) Set DL(1)="LD",Count=0,RefNr="" Set Count=$$MORE(LD(6),LD(4)) Do WL^PROC LSL Do SL^PROC If R="-" Quit R If 'Exist,R="A" Quit R If MultSel Do Goto LSL:R'="ENTER",LSL:$TR(MultNrs,D,"")="" Quit $TR(MultNrs,"-","") .If R="ENTER",MultNrs'=D Set $E(MultNrs)="",$E(MultNrs,$L(MultNrs))="" .If R="ENTER",MultNrs=D Set MultNrs="-" .Quit:R'=" " Quit:'$D(^HULP($J,LD(6))) .Set R=$P(^HULP($J,LD(6)),D,99) .If MultNrs'[R Set MultNrs=MultNrs_R_D .Else Set MultNrs=$P(MultNrs,D_R_D)_D_$P(MultNrs,D_R_D,2) .Do EL^PROC If R="ENTER",$D(^HULP($J,LD(6))) Quit $P(^HULP($J,LD(6)),D,99) Goto LSL ; MORE(LSelect,LMax) New X,OrgaluxOk If Count,RefNr="" Quit Count If $D(LEVNr) Do Set LD(9)=Count Quit Count .For Set RefNr=$O(@($$GLOREF("A",RefNr))) Quit:RefNr="" Do ..Quit:'$D(@($$GLOREF("H",$P(RefNr,D,2)))) ..Set R=@($$GLOREF("H",$P(RefNr,D,2)))@(1),$P(R,D,99)=$P(RefNr,D,2) ..If $L(ChkWMS),Global="KTO",+$$CHECKWMS(RefNr)'=ChkWMS Quit ..If $L(ChkWMS),Global="KOD",+$$CHECKWMS(,,RefNr)'=ChkWMS Quit ..If $L(Orgalux) Do Quit:'OrgaluxOk ...Set X="Set OrgaluxOk="_$S(Orgalux:"",1:"'")_"$$ISORGAL("_$S(Global="KOD":"""O""",1:"""L""")_",RefNr)" ...Xecute X ..Set:Global="KOD" $P(R,D,100)=''$D(^ORDW("IO",RefNr)) ..Set:Global="KTO" $P(R,D,100)=''$D(^RCP("IT",RefNr)) ..Set Count=Count+1,^HULP($J,Count)=R If $D(DERDENr) Do Set LD(9)=Count Quit Count .For Set RefNr=$O(@($$GLOREF("H",RefNr)),-1) Quit:RefNr="" Do ..Set R=@($$GLOREF("H",RefNr))@(1),$P(R,D,99)=RefNr ..If $L(ChkWMS),Global="KTO",+$$CHECKWMS(RefNr)'=ChkWMS Quit ..If $L(ChkWMS),Global="KOD",+$$CHECKWMS(,,RefNr)'=ChkWMS Quit ..If $L(Orgalux) Do Quit:'OrgaluxOk ...Set X="Set OrgaluxOk="_$S(Orgalux:"",1:"'")_"$$ISORGAL("_$S(Global="KOD":"""O""",1:"""L""")_",RefNr)" ...Xecute X ..Set:Global="KOD" $P(R,D,100)=''$D(^ORDW("IO",RefNr)) ..Set:Global="KTO" $P(R,D,100)=''$D(^RCP("IT",RefNr)) ..If $L(ChkWMS),$P(R,D,100)'=ChkWMS Quit ..Quit:$D(NoSelNr(RefNr)) ..If Global="KTO",$D(DERDENr("K")),$P(R,D,8)'=DERDENr("K") Quit ..Set Count=Count+1,^HULP($J,Count)=R New DERDENr For Set RefNr=$O(^HULP(%J,RefNr),-1) Quit:RefNr="" Do Quit:Count-LSelect>LMax .If $L(Orgalux) Do Quit:'OrgaluxOk ..Set X="Set OrgaluxOk="_$S(Orgalux:"",1:"'")_"$$ISORGAL("_$S(Global="KOD":"""O""",1:"""L""")_",RefNr)" ..Xecute X .Set R=^HULP(%J,RefNr) .Set DERDENr=$P(R,D),R=@($$GLOREF("H",RefNr))@(1),$P(R,D,99)=RefNr .Set:Global="KOD" $P(R,D,100)=''$D(^ORDW("IO",RefNr)) .Set:Global="KTO" $P(R,D,100)=''$D(^RCP("IT",RefNr)) .Set $P(R,D,6)=DERDENr,Count=Count+1,^HULP($J,Count)=R Set LD(9)=Count Quit Count ; ABNR(DERDENr,Exist,MultSel,ChkWMS,Orgalux) New R,LEVNr,Prompt,Komm1,Komm2 Set MultSel=$G(MultSel) If Global'="KTO" Quit "-" Set R=$G(DERDENr("L")) Set:'R R=$$SELECT^LEVER(1,"","AB-nummer van leverancier : ") If R="-" Quit R Set (LEVNr,LC)=R Set Prompt="AB-nummer : " Set Komm1="van "_$P(^KLE(^KL1(LEVNr),0),D,2)_$S('Exist:" A=automatisch nummer",1:"") Set Komm2="page up (SEL) voor lijst" AASK Set FP=1901 Write @F,@F1 Set R=$$UPCASE^vhRtn1($$ASK^vhINP(Prompt,12,"",Komm1,Komm2)) If zb!(R="") Set R=$$LIST(LEVNr,.NoSelNr,MultSel,ChkWMS,Orgalux) Goto AASK:R="-" If R="-" Kill LC If R="A",Exist Goto AASK If R="A"!(R="-") Quit R Set R=$$UPTRIMAN^vhRtn1(R) If $P($O(^KTO4(LEVNr,R_D)),D)=R Set R=$P($O(^KTO4(LEVNr,R_D)),D,2) If R'<$P(Limit,D),R'>$P(Limit,D,2),$D(@($$GLOREF("I",R))) Quit R Goto AASK ; GLOREF(Type,Ref,Ref2) New R If Type="D" Do Quit R .If Global="KTO" Set R="^KLE(^KL1("_Ref_"),0)" .Else Set R="^KKL(^KK1("_Ref_"),0)" If Type="H" Do Quit R .If Global="KTO" Set R="^"_Global_"(DERDENr,"""_Ref_""")" .Else Set R="^"_Global_"(DERDENr,""F"","""_Ref_""")" If Type="I" Do Quit R .If Global="KTO" Set R="^"_IGlobal_"("""_Ref_""")" .Else Set R="^"_IGlobal_"("""_Ref_""",""F"")" If Type="2" Do Quit R .If Global="KTO" Set R="^"_IGlobal_"("""_Ref_"""" .Else Set R="^"_IGlobal_"(""F"","""_Ref_"""" .If $D(Ref2) Set R=R_","""_Ref2_"""" .Set R=R_")" If Type="A" Do Quit R .Set R="^KTO4(LEVNr,"""_Ref_""")" Quit "" ; DATA(Type,Ref) New Data Set Data=$D(@($$GLOREF(Type,Ref))) If 'Data,Global="KTO" Do .Set Ref=$$UPTRIMAN^vhRtn1(Ref) .If '$G(DERDENr) Do Quit ..New DERDENr ..Set DERDENr="" ..For Set DERDENr=$O(^KTO4(DERDENr)) Quit:DERDENr="" Set Data=$$DATA(Type,Ref) Quit:Data .Quit:$P($O(^KTO4(DERDENr,Ref_D)),D)'=Ref .Set Ref=$P($O(^KTO4(DERDENr,Ref_D)),D,2) .Quit:Ref="" .Set Data=$D(@($$GLOREF(Type,Ref))) Quit Data ; ; Sorteren van Index2 bestand voor overzicht volgens nummer SORT(IGlobal) New DERDENr,RefNr,Count Kill ^HULP(%J) Set Count=0,DERDENr="" For Set DERDENr=$O(@($$GLOREF(2,DERDENr))) Quit:DERDENr="" Do .Set RefNr="" .For Set RefNr=$O(@($$GLOREF(2,DERDENr,RefNr))) Quit:RefNr="" Set ^HULP(%J,RefNr)=DERDENr Quit ; RPLKL Quit:$D(Extern) Set KScreen=$P($$RAADPL^KLANT(KC,$G(KScreen),1),D) Do ADD^vhScherm(1,24) Quit ; RPLPR Quit:$D(Extern) Set PScreen=$P($$RAADPL^PRODUKT(PR,$G(PScreen),1),D) Do ADD^vhScherm(1,24) Quit ; FMTKORT(Korting1,Korting2) New Korting Set Korting1=$G(Korting1),Korting2=$G(Korting2),Korting="" If Korting1 Set Korting=$$EXTNUM^vhDTyp(Korting1,4,"",1) If Korting2 Set Korting=Korting_" + "_$$EXTNUM^vhDTyp(Korting2,4,"",1) Quit Korting ; HELP Set Help=1,I=24-$L(USC,U) For I=$P(UD,D,2)+1:1:I Set FP=I*100+1 Write @F,@F2 For I=1:1:$L(USC,U) Write !,$P(USC,U,I),$J("",80-$L($P(USC,U,I))) Quit ; PRCOUNT(Count,Global,Show) New R,Next Set Global=$G(Global),Show=$G(Show,1) If Count Set PrCount=Count Else If Count="+" Set PrCount=PrCount+1 Else If Count="-" Set PrCount=PrCount-1 Do:Show .Set FP=277 .Do:$L(Global) ..Set R="^"_Global_"(0," Set:Global'="KTO" R=R_"""F""," Set R=R_"0)" ..Set R=$G(@R),Next=100 ..For Set Next=$O(^(Next)) Quit:'Next Do ...Set R=^(Next) Set:$P(R,U)="AANTAL PRODUKTEN" FP=$P(R,U,5)*100+$P(R,U,6)+2 .Write @F,@FMTB,$J(PrCount,3),@FMTb Quit ; CALCTOT(Netto,Munt,Show) New UPAR Set:KlMunt'="MTL" Munt=KlMunt Set UPAR=$$MUNT^vhRtn1(Munt,,12) If KlMunt="MTL" Set Netto=$J(Netto*UPAR/LPAR,0,2) Set UTOT=$G(UTOT)+Netto If $G(Show) Do SHOWTOT(UTOT) Quit ; SHOWTOT(UTOT) Do SHOWTOT^KFTOT(UTOT) Quit ; GETNUM(Global,IGlobal) New %TC,R,Number,GloRef,IGloRef,KLNr,BONNr,CompDate Set GloRef="^"_Global_"(0,"_$S(Global="KTO":"""TR"")",1:"""F"",""UR"")") Set IGloRef="^"_IGlobal_"(Number)" For Do ADD^vhLock(GloRef) Quit:%TC Hang 1 Set Number=@GloRef,Number=$$CHKMAX(Global,Number) If Global="KUL" Do .For Quit:'$D(@IGloRef)&'$D(^ORDW("D",Number)) Do ..; Afgezet CW 14.07.10 (de levering mag zelf het eerstvolgend vrij nummer gaan zoeken) ..;Set R=$P($G(^KU1(Number,"F")),D) Set:'R R=$P(^ORDW("D",Number),D) ..;Set R=R_" "_$P(^KKL(^KK1(R),0),D,2) ..;Set R=$$TXTPOP("EXISTNUM","","""Leveringsbon "_Number_"""","""klant""",""""_R_"""") ..;Set Number=@GloRef,Number=$$CHKMAX(Global,Number) ..Set Number=Number+1,Number=$$CHKMAX(Global,Number) Else If Global="KTO" Do .For Quit:'$D(@IGloRef)&'$D(^RCP("D",Number)) Do ..; Afgezet CW 01.10.09 (de toelevering mag zelf het eerstvolgend vrij nummer gaan zoeken) ..;Set R=$P($G(^KTO1(Number)),D) Set:'R R=$P(^RCP("D",Number),D,2) ..;Set R=R_" "_$P(^KLE(^KL1(R),0),D,2) ..;Set R=$$TXTPOP("EXISTNUM","","""Toelevering "_Number_"""","""leverancier""",""""_R_"""") ..;Set Number=@GloRef,Number=$$CHKMAX(Global,Number) ..Set Number=Number+1,Number=$$CHKMAX(Global,Number) Else If Global="KOD" Do . For Quit:'$D(@IGloRef) Do . . Set CompDate=$$CALCDATE^vhDTyp(,"M",-6,"FD"),R=^KO1(Number,"F"),KLNr=$P(R,D),BONNr=$P(R,D,2) . . If $D(^KOD(KLNr,"F",Number)) . . Else If $D(^KUL(KLNr,"F",BONNr)) . . Else Set R=$G(^KUL(KLNr,"G",BONNr,1)) If $L(R),$$INTDATE^vhDTyp($P(R,D,2))>CompDate . . Else Set R=$G(^KUL(KLNr,"M",BONNr,1)) If $L(R),$$INTDATE^vhDTyp($P(R,D,2))>CompDate . . Else Set R=$G(^KUL(KLNr,"T",BONNr,1)) If $L(R),$$INTDATE^vhDTyp($P(R,D,2))>CompDate . . Else Kill ^KO1(Number) Quit . . Set Number=Number+1,Number=$$CHKMAX(Global,Number) Else For Quit:'$D(@IGloRef) Set Number=Number+1,Number=$$CHKMAX(Global,Number) Set @GloRef=Number+1 Do REMOVE^vhLock(GloRef) Quit Number ; CHKMAX(Global,Number) If Global="KTO",Number>299999 Set Number=200000 If Global="KOD",Number>199999 Set Number=100000 If Global="KUL",Number>399999 Set Number=300000 If Global="KOFF",Number>499999 Set Number=400000 If Global="KOFKL",Number>599999 Set Number=500000 Quit Number ; SHORTNUM(Global,IGlobal,Input) New Number,GloRef,IGloRef,Reeks Set GloRef="^"_Global_"(0,"_$S(Global="KTO":"""TR"")",1:"""F"",""UR"")") Set IGloRef="^"_IGlobal_"(Number)" Set Number=@GloRef,$E(Number,$L(Number)-$L(Input)+1,$L(Number))=Input Do:'$D(@IGloRef) .Set:$L(Input)<5 Reeks=$E(Number),$E(Number,1,$L(Number)-$L(Input))=$E(Number,1,$L(Number)-$L(Input))-1,$E(Number)=Reeks .Quit:$D(@IGloRef) .Set Number="" Quit $S(Global="KTO":$S(Number:Number,1:Input),1:Number) ; CHKMUNT(Munt) New Ok Set Ok=1 If Munt=$$MUNTKODE^vhRtn1("BEF") Else If Munt=$$MUNTKODE^vhRtn1("NLG") Else If Munt=$$MUNTKODE^vhRtn1("EUR") Else If Munt=$$MUNTKODE^vhRtn1("MTL") Else If Munt=$$MUNTKODE^vhRtn1("DEM") Else Set Ok=0 Quit Ok ; CHKAANT(KLNr,PRNr,Aantal) New R,Ok,ORDNr,OLNr,Contract,IsHandel New IsStock,PerStuk,MinBestH,GrootVp,NormVp,KleinVp Set Ok=1 Set:$$ISKLANT^KS(KLNr) Ok=$$CheckMinQty^KS(PRNr,Aantal) Do:Ok .Set IsHandel=$$IsHandel^KLANT5(KLNr) .Set R=^KPR(PRNr,1),IsStock=$P(R,D,20) .Set R=$O(^KPR(PRNr,"J")) Set:$E(R)="J" R=^KPR(PRNr,R) .Set MinBestH=$P(R,D,6),PerStuk=$P(R,D,13),KleinVp=$P(R,D,14),NormVp=$P(R,D,15),GrootVp=$P(R,D,16) .Set:'NormVp NormVp=GrootVp Set:'KleinVp KleinVp=NormVp .If 'IsStock Do ..Set ORDNr="",Contract=0 ..For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:'ORDNr Do Quit:Contract ...Quit:$P(^KOD(KLNr,"F",ORDNr,1),D,25)'="C" ...Set OLNr=100 ...For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do Quit:Contract ....Set R=^KOD(KLNr,"F",ORDNr,OLNr) ....If $P(R,D,2)=PRNr,$P(R,D,3)'$$GETSTOCK^PRODUKT4(PRNr,"T"),GrootVp Do ..If AantalMinBestH,Aantal#GrootVp Set Ok=0 .;If IsHandel,KleinVp,Aantal#KleinVp Set Ok=0 .If IsStock,PerStuk Set Ok=1 Quit Ok ; NOTFOUND(Type,DOCNr) New Document Set Document=$S(Type="TL":"Toelevering",Type="ORD":"Order",1:""),DOCNr=$G(DOCNr) Quit:Document="" Quit:'DOCNr Do STORE^vhTERMINA() Do TXTL^vhINP("FLOW","NOTFOUND") Do REFRESH^vhTERMINA() Quit ; MAILLINK(Type,DOCNr) New Document Set Document=$S(Type="TL":"Toelevering",Type="ORD":"Order",1:""),DOCNr=$G(DOCNr) Quit:Document="" Quit:'DOCNr If Type="TL" Do .If $D(^KTO1(sRef)),$D(^KTO($P(^KTO1(sRef),D),sRef)) Do ..New Locals ..Set Locals("TOENr")=sRef,Locals("Extern")=1 ..Do DO^vhPROGRAM("FTE^KTO30","","",$G(NoMod)) .Else Do NOTFOUND(Type,DOCNr) If Type="ORD" Do .If $D(^KO1(sRef,"F")),$D(^KOD($P(^KO1(sRef,"F"),D),"F",sRef)) Do ..New Locals ..Set Locals("ORDNr")=sRef,Locals("Extern")=1 ..Do DO^vhPROGRAM("FOE^KF9","","",$G(NoMod)) .Else Do NOTFOUND(Type,DOCNr) Quit ; TXTPOP(Id,NoRefr,P1,P2,P3,P4,P5,P6,P7,P8) New I,R Set R="$$^vhTXTPOP(""FLOW"",Id,$G(NoRefr)" For I=1:1 Quit:'$D(@("P"_I)) Do .Set:$E(@("P"_I))'="""" @("P"_I)=""""_@("P"_I) .Set:$E(@("P"_I),$L(@("P"_I)))'="""" @("P"_I)=@("P"_I)_"""" .Set:@("P"_I)="""" @("P"_I)="""""" .Set R=R_","_@("P"_I) Set R=R_")" Quit @R ; CHECKWMS(TOENr,TLNr,ORDNr,OLNr,BONNr,BLNr,WarnMod,WarnDel,CheckKom) New R,CheckWMS,LEVNr,TLUNr,KLNr,OLUNr,LevNaam,KlNaam,RCPNr,Delete,WMSStat Set TOENr=$G(TOENr),TLNr=$G(TLNr),ORDNr=$G(ORDNr),OLNr=$G(OLNr),BONNr=$G(BONNr),BLNr=$G(BLNr) Set WarnMod=$G(WarnMod),WarnDel=$G(WarnDel),CheckKom=$G(CheckKom) Set CheckWMS=";;;" If WarnMod,WarnDel Do .If TOENr Set $P(CheckWMS,";")=''$D(^RCP("IT",TOENr)) .If ORDNr Set $P(CheckWMS,";",3)=''$D(^ORDW("IO",ORDNr)) .If BONNr Do ..Set $P(CheckWMS,";",5)=''$D(^RCP("IU",BONNr)) ..Set:$P(CheckWMS,";",5) $P(CheckWMS,";",5)=$P($G(^RCP("D",BONNr)),D,20)'="I" Else Do .Set (TLUNr,OLUNr)="" .If TOENr Do ..Set LEVNr=$P(^KTO1(TOENr),D) ..If 'TLNr Do Quit ...New ORDNr,TLNr ...Quit:CheckKom ...Set TLNr=100 ...For Set TLNr=$O(^KTO(LEVNr,TOENr,TLNr)) Quit:TLNr="" Do Quit:CheckWMS ....Set R=^KTO(LEVNr,TOENr,TLNr),ORDNr=$P(R,D,27) ....If ORDNr,$TR(CheckWMS,";0","")="" Set R=$$CHECKWMS(,,ORDNr,,,,WarnMod,WarnDel,1) Set:R CheckWMS=$P(R,D,2) ..Set R=^KTO(LEVNr,TOENr,TLNr),TLUNr=$P(R,D,15) ..If 'ORDNr Set ORDNr=$P(R,D,27) Set:'OLNr OLNr=$P(R,D,28) .If ORDNr Do ..Set KLNr=$P(^KO1(ORDNr,"F"),D) ..If 'OLNr Do Quit ...New TOENr,OLNr ...Quit:CheckKom ...Set OLNr=100 ...For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:CheckWMS ....Set R=^KOD(KLNr,"F",ORDNr,OLNr),TOENr=$P(R,D,27) ....If TOENr,$TR(CheckWMS,";0","")="" Set R=$$CHECKWMS(TOENr,,,,,,WarnMod,WarnDel,1) Set:R CheckWMS=$P(R,D,2) ..Set R=^KOD(KLNr,"F",ORDNr,OLNr),OLUNr=$P(R,D,15) ..If 'TOENr Set TOENr=$P(R,D,27) Set:'TLNr TLNr=$P(R,D,28) .If TOENr,TLUNr Set $P(CheckWMS,";",2)=''$D(^RCP("IT",TOENr,TLUNr)) .Else If TOENr Set $P(CheckWMS,";")=''$D(^RCP("IT",TOENr)) .If ORDNr,OLUNr Set $P(CheckWMS,";",4)=''$D(^ORDW("IO",ORDNr,OLUNr)) .Else If ORDNr Set $P(CheckWMS,";",3)=''$D(^ORDW("IO",ORDNr)) .If BONNr Do ..Set $P(CheckWMS,";",5)=''$D(^RCP("IU",BONNr)) ..Set:$P(CheckWMS,";",5) $P(CheckWMS,";",5)=$P($G(^RCP("D",BONNr)),D,20)'="I" If WarnMod,WarnDel Do .If TOENr,$P(CheckWMS,";")!$P(CheckWMS,";",2) Do ..Set LEVNr=$P(^KTO1(TOENr),D),LevNaam=$P(^KLE(^KL1(LEVNr),0),D,2) ..Set R=$$TXTPOP("WMSMODDELTOE","",""""_$$EXTNUM^vhDTyp(TOENr,0,".",0)_"""",""""_LevNaam_"""") .If ORDNr,$P(CheckWMS,";",3)!$P(CheckWMS,";",4) Do ..Set KLNr=$P(^KO1(ORDNr,"F"),D),KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) ..Set R=$$TXTPOP("WMSMODDELORD","",""""_$$EXTNUM^vhDTyp(ORDNr,0,".",0)_"""",""""_KlNaam_"""") .If BONNr,$P(CheckWMS,";",5) Do ..Set KLNr=$P(^KU1(BONNr,"F"),D),KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) ..Set R=$$TXTPOP("WMSMODDELBON","",""""_$$EXTNUM^vhDTyp(BONNr,0,".",0)_"""",""""_KlNaam_"""") Else If WarnMod Do .If TOENr,$P(CheckWMS,";")!$P(CheckWMS,";",2) Do ..Set LEVNr=$P(^KTO1(TOENr),D),LevNaam=$P(^KLE(^KL1(LEVNr),0),D,2) ..If TLNr,$P(CheckWMS,";",2) Do Quit ...Set R=$$TXTPOP("WMSMODTOELINE","",""""_$$EXTNUM^vhDTyp(TOENr,0,".",0)_"""",""""_LevNaam_"""") ..Set R=$$TXTPOP("WMSMODTOE","",""""_$$EXTNUM^vhDTyp(TOENr,0,".",0)_"""",""""_LevNaam_"""") .If ORDNr,$P(CheckWMS,";",3)!$P(CheckWMS,";",4) Do ..Set KLNr=$P(^KO1(ORDNr,"F"),D),KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) ..If OLNr,$P(CheckWMS,";",4) Do Quit ...Set R=$$TXTPOP("WMSMODORDLINE","",""""_$$EXTNUM^vhDTyp(ORDNr,0,".",0)_"""",""""_KlNaam_"""") ..Set R=$$TXTPOP("WMSMODORD","",""""_$$EXTNUM^vhDTyp(ORDNr,0,".",0)_"""",""""_KlNaam_"""") .If BONNr,$P(CheckWMS,";",5) Do ..Set KLNr=$P(^KU1(BONNr,"F"),D),KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) ..If BLNr Do Quit ...Set R=$$TXTPOP("WMSMODBONLINE","",""""_$$EXTNUM^vhDTyp(BONNr,0,".",0)_"""",""""_KlNaam_"""") ..Set R=$$TXTPOP("WMSMODBON","",""""_$$EXTNUM^vhDTyp(BONNr,0,".",0)_"""",""""_KlNaam_"""") Else If WarnDel Do .If TOENr,$P(CheckWMS,";")!$P(CheckWMS,";",2) Do ..Set LEVNr=$P(^KTO1(TOENr),D),LevNaam=$P(^KLE(^KL1(LEVNr),0),D,2) ..If TLNr,$P(CheckWMS,";",2) Do Quit ...Set R=$$TXTPOP("WMSDELTOELINE","",""""_$$EXTNUM^vhDTyp(TOENr,0,".",0)_"""",""""_LevNaam_"""") ..Set R=$$TXTPOP("WMSDELTOE","",""""_$$EXTNUM^vhDTyp(TOENr,0,".",0)_"""",""""_LevNaam_"""") .If ORDNr,$P(CheckWMS,";",3)!$P(CheckWMS,";",4) Do ..Set KLNr=$P(^KO1(ORDNr,"F"),D),KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) ..If OLNr,$P(CheckWMS,";",4) Do Quit ...Set R=$$TXTPOP("WMSDELORDLINE","",""""_$$EXTNUM^vhDTyp(ORDNr,0,".",0)_"""",""""_KlNaam_"""") ..Set R=$$TXTPOP("WMSDELORD","",""""_$$EXTNUM^vhDTyp(ORDNr,0,".",0)_"""",""""_KlNaam_"""") .If BONNr,$P(CheckWMS,";",5) Do ..Set KLNr=$P(^KU1(BONNr,"F"),D),KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) ..If BLNr Do Quit ...Set R=$$TXTPOP("WMSDELBONLINE","",""""_$$EXTNUM^vhDTyp(BONNr,0,".",0)_"""",""""_KlNaam_"""") ..Set R=$$TXTPOP("WMSDELBON","",""""_$$EXTNUM^vhDTyp(BONNr,0,".",0)_"""",""""_KlNaam_"""") ..Quit:R'="V" ..If '$$ISTERUGN^FLOWBON5(BONNr,1) Quit:'$$ASK^vhWACHTW("MANAGER","","",0) ..Set RCPNr=$G(^RCP("IU",BONNr)) ..Quit:'RCPNr ..Set R=^RCP("D",RCPNr),WMSStat=$P(R,D,20),Delete=WMSStat="" ..If 'Delete,"AI"'[WMSStat Set Delete=$$CHKDEL^EWRCPST(RCPNr,BONNr) ..If 'Delete Do ...Set R="$$^vhTXTPOP(""EWRCPST"",""NODELTBNR"","""",""" ...Set R=R_"Terugname " ...Set R=R_$$EXTNUM^vhDTyp(BONNr,0,".",0)_""",""" ...Set R=R_$P(^KKL(^KK1(KLNr),0),D,2)_""",""" ...Set R=R_$$EXTNUM^vhDTyp(RCPNr,0,".",0) ...Set R=R_""")" ...Xecute "Set R="_R ..Else Do REMTBNR^EWRCPST(RCPNr,BONNr) Set CheckWMS=0 Set CheckWMS=$S($L($TR(CheckWMS,";0","")):"1\"_CheckWMS,1:0) Quit CheckWMS ; ISDEUR(Document,DocNr,LevRef) Quit $$ISDEUR^FLOWCHK(Document,DocNr,$G(LevRef)) ; ISKADERD(Document,DocNr) Quit $$ISKADERD^FLOWCHK(Document,DocNr) ; ISHALUX(Document,DocNr,LijnNr) Quit $$ISHALUX^FLOWCHK(Document,DocNr,$G(LijnNr)) ; ISORGAL(Document,DocNr,LijnNr) Quit $$ISORGAL^FLOWCHK(Document,DocNr,$G(LijnNr)) ; ISHALWIZ(Document,DocNr,LijnNr) Quit $$ISHALWIZ^FLOWCHK(Document,DocNr,$G(LijnNr)) ; ISCOMM(Document,DocNr) Quit $$ISCOMM^FLOWCHK(Document,DocNr) ; ISPLUSMI(Document,DocNr) Quit $$ISPLUSMI^FLOWCHK(Document,DocNr) ; ISPROJ(Document,DocNr) Quit $$ISPROJ^FLOWCHK(Document,DocNr) ; ISZSTUPD(Document,DocNr) Quit $$ISZSTUPD^FLOWCHK(Document,DocNr) ; IsAsap(Document,DocNr) Quit $$IsAsap^FLOWCHK(Document,DocNr) ; BevatAventos(Document,DocNr,LijnNr) Quit $$BevatAventos^FLOWCHK(Document,DocNr,$G(LijnNr)) ; BevatMaatWerk(Document,DocNr,LijnNr) Quit $$BevatMaatWerk^FLOWCHK(Document,DocNr,$G(LijnNr)) ; BevatAfdekKap(Document,DocNr,LijnNr) Quit $$BevatAfdekKap^FLOWCHK(Document,DocNr,$G(LijnNr)) ; GBREK(Land) New GeRek Set Land=$G(Land) Set:Land="" Land=$$FADEF^vhRtn1(3) Set Land=$$LAND^vhRtn1(Land,1,2),GbRek=$P($G(^KBA(45,Land)),D) If GbRek="" Set Land=$$LAND^vhRtn1(Land,"I"),GbRek=$P($G(^KBA(45,Land)),D) Set:GbRek="" GbRek=$P(^KBA(45,"EXP"),D) Quit GbRek ; ; Klant aan wie te factureren FactCust(KLNr,Document) New FactCust,Warn,Space Set Document=$G(Document),Warn=$L(Document),Document=$S(Document="O":"Order",Document="L":"Uitlevering",1:Document) Set FactCust=##Class(BL.Derde.Klant.Relaties).FactuurAan(KLNr) Set:FactCust="" FactCust=KLNr If Warn,FactCust'=KLNr Do . Set Space=$L(Document)+6 Set:Space<13 Space=13 Set Space=$J("",Space) . Set Warn=Document_" van"_$J("",7-$L(Document))_": "_KLNr_" "_$P(^KKL(^KK1(KLNr),0),D,2)_"~"_Space_$P(^(0),D,5)_"~"_Space_$P(^(0),D,6)_" "_$P(^(0),D,7) . Set Warn=Warn_"~~Factuur aan"_$J("",$L(Space)-13)_": "_FactCust_" "_$P(^KKL(^KK1(FactCust),0),D,2)_"~"_Space_$P(^(0),D,5)_"~"_Space_$P(^(0),D,6)_" "_$P(^(0),D,7) . Do WARN^vhTXTPOP(Warn,"") Quit FactCust ; CALC(Document,DocNr,TxtPop) New R,Calc,KLNr,KlNaam,TeBet,Munt,Rembours,Afgehandeld,RembAfgeh Set TxtPop=$G(TxtPop) If Document="O" Do .Set Calc=$$CALCORD^FLOWORD5(DocNr),TeBet=$P(Calc,D),Munt=$P(Calc,D,7) .Do:TxtPop ..Set R=^KO1(DocNr,"F"),KLNr=$P(R,D),Document="Order",Rembours=$$ISREMB^REMBOURS(KLNr) ..Set R=^KOD(KLNr,"F",DocNr,1),Afgehandeld=$P(R,D,37) If Document="L" Do .Set Calc=$$CALCBON^FLOWBON5(DocNr),TeBet=$P(Calc,D),Munt=$P(Calc,D,7) .Set:TxtPop R=^KU1(DocNr,"F"),KLNr=$P(R,D),Document="Bon" If TxtPop Do .Set Rembours=$G(Rembours),Afgehandeld=$G(Afgehandeld),RembAfgeh="" .Set R=^KKL(^KK1(KLNr),0),KlNaam=$P(R,D,2) .If Rembours Set RembAfgeh="(Rembours" Set:Afgehandeld RembAfgeh=RembAfgeh_" - afgehandeld" Set RembAfgeh=RembAfgeh_")" .Set TeBet=$$EXTNUM^vhDTyp(TeBet,0,".",$$MUNT^vhRtn1(Munt,4)) .Set R=$$TXTPOP("TEBET",,KLNr,KlNaam,Document_$J("",10-$L(Document)),$$EXTNUM^vhDTyp(DocNr,0,".T",0),TeBet,Munt,RembAfgeh,''Afgehandeld) .If Document="Order",R="R" Set R=^KOD(KLNr,"F",DocNr,1),Afgehandeld="",$P(R,D,37)=Afgehandeld,^KOD(KLNr,"F",DocNr,1)=R Quit $G(Calc) ; CHKSOPR(KLNr,PRNr,Document,BackGrnd) New I,R,ChkSOPR,KortTxt,SOPRKLNr,SOPRCust,FlowCust,IdentNr,SKortTxt,SOPRPRNr Set ChkSOPR=1,R=^KPR(PRNr,0),KortTxt=$P(R,D) If KortTxt?.E1"*"4.5N1"*".E Do .Set ChkSOPR="" .For I=1:1 Set SOPRKLNr=$P(KortTxt,"*",I) Quit:SOPRKLNr="" Quit:SOPRKLNr?4.5N .Quit:'SOPRKLNr .If '$D(^KK1(SOPRKLNr)) Set ChkSOPR=1 Quit .If SOPRKLNr=KLNr Set ChkSOPR=1 Quit .If $G(BackGrnd),'$G(OfferteNr) Quit .Set R=^KKL(^KK1(SOPRKLNr),0),SOPRCust=$P(R,D,2) .Set R=^KKL(^KK1(KLNr),0),FlowCust=$P(R,D,2) .Set ChkSOPR=$$TXTPOP("SOPR","",KortTxt,SOPRCust,Document,FlowCust) Else Do .Set SOPRPRNr="",R=^KPR(PRNr,2),IdentNr=$P(R,D,25),IdentNr=$E($TR(IdentNr,".",""),2,99) .For I=0:1:9 Do Quit:SOPRPRNr ..Set R=$G(^KPR2(I_IdentNr_" ")),PRNr=$P(R,D) ..Quit:'PRNr ..Set R=^KPR(PRNr,0),SKortTxt=$P(R,D) Set:SKortTxt[("*"_KLNr_"*") SOPRPRNr=PRNr .Quit:'SOPRPRNr .Set ChkSOPR="" .If $G(BackGrnd),'$G(OfferteNr) Quit .Set R=^KKL(^KK1(KLNr),0),KlNaam=$P(R,D,2) .Set ChkSOPR=$$TXTPOP("SOPR2","",KortTxt,KlNaam,SKortTxt) Set:ChkSOPR="S" ChkSOPR=SOPRPRNr Quit ChkSOPR ; ; Opzoeken van de vrije ruimtes GETGAPS(Global,MinSize,Display) New I,R,IGlobal,Huidig,Next,Previus,Last,Gaps Set MinSize=$G(MinSize,1000),Global=$TR(Global,"^","") Set:"\KUL\UL\KU1\U1\"[(D_Global_D) Global="^KUL",IGlobal="^KU1",Huidig=@(Global_"(0,""F"",""UR"")") Set:"\KOD\OD\KO1\O1\"[(D_Global_D) Global="^KOD",IGlobal="^KO1",Huidig=@(Global_"(0,""F"",""UR"")") Set:"\KTO\TO\KTO1\TO1\"[(D_Global_D) Global="^KTO",IGlobal="^KTO1",Huidig=@(Global_"(0,""TR"")") Set:"\KOFKL\OFKL\KOFKL1\OFKL1\"[(D_Global_D) Global="^KOFKL",IGlobal="^KOFKL1",Huidig=@(Global_"(0,""F"",""UR"")") Do:$G(Display) .Write !,"Global : ",Global," (huidig : ",Huidig,")" Set (Previus,Next)=Huidig\100000*100000-1,Last=Previus+100001 For Set Next=$O(@(IGlobal_"(Next)")) Quit:Next="" Do .Set:(Next-Previus-1)'Huidig,$P(R,"-",2)'MinSize . Set From=Previus+1,To=Next-1 . Set Body="Global : "_Global_$C(10,13,10,13)_" Van Tot Aantal"_$C(10,13)_"------ ------ ------"_$C(10,13) . Set Body=Body_$J($S(Previus:From,1:First),6)_$J($S(Next:To,1:Last),10)_$J($S(Next:To,1:Last)-$S(Previus:From,1:First)+1,10) . Set Body=Body_" <--- "_Huidig_" (huidig)" . Set From=$ZUTIL(110)_"@VANHOECKE.BE" . Set To=$LB("CW@VANHOECKE.BE") . Set Subject="Vrije ruimte "_Global . Do SendMiniMail^vhLib(From,To,Subject,Body) Else Do GETGAPS^FLOW(Global,MinSize,1) Quit ; ToeleveringViaDossierNummer(DossierNr) New TOENr,DossierType,DossierCode,PRNr,WNode Set TOENr="",DossierType=$E(DossierNr),DossierCode=$E(DossierNr,2,99) Set PRNr=$G(^KPR3(DossierType,DossierCode)) Do:PRNr . Set WNode="W" . For Set WNode=$O(^KPR(PRNr,WNode)) Quit:$E(WNode)'="W" If $E(WNode,9)="T" Set TOENr=$S(TOENr:"",1:$E(WNode,18,23)) Quit:'TOENr Quit $S(TOENr:TOENr,1:999999) ; 999999 -> er zijn meerdere toeleveringen ; ; Mogen de leveringen per dag ingegeven worden? LeveringPerDag(NoWachtW) New PerDag Set PerDag=1 ; Steeds per dag ; +$G(^KOD(0,"F","PERDAG")) ;If PerDag,$ZU(5)'="DEV-ADMIN1",'$G(NoWachtW) Set PerDag=$$ASK^vhWACHTW("PROGMODE",,,0,,"Ingave levering per dag.") Quit PerDag