#include BL.Derde.KlantSpecifiek EWORDS ;E'WMS Markeren voor orderpicking [ 12/04/2003 2:20 PM ] ; ;Optie S = auto select ;Optie A = alle klanten ;Optie F = volledig overzicht ;Optie T = temp klant ;Optie L = link menu niet aktief ; ALL Kill NewSel,DOutSend Do INIT Do SELECT(%J) If %SC Do Goto ALL:$G(NewSel) .If $G(^HULP(%J,"S","K","KLNR")) Do ..Set KLNr=^HULP(%J,"S","K","KLNR") ..Set ^HULP(%J,"Q",1)=KLNr ..Do VERWERK(KLNr,,,%J) .Else If $G(^HULP(%J,"S","O","ORDNR")) Do ..Set ORDNr=^HULP(%J,"S","O","ORDNR") ..Do VERWERK(,ORDNr) .Else Do ..Do NEXTKL^EWORDS(%J) ..;Job NEXTKL^EWORDS(%J) ..Set FP=2201 ..Write @FCH,@F,@F1 ..Set FP=160 ..Write @F,@FMTK,"*** I'm thinking ***",@FMTk ..For Quit:$D(^HULP(%J,"Q",1)) Hang 1 ..Write @FCS ..Set FP=160 ..Write @F,@F2 ..If ^HULP(%J,"Q",1)="EOF" Do ...Set R=$$^vhTXTPOP("EWORDS","NOCUSTS"),NewSel=1 ..Else Do VERWERK(,,"A",%J) Kill ^HULP(%J) Quit ; HALUX New NewSel,DOutSend,Macro,KLNr Do INIT Set Macro=7587 Do MACRO(Macro) Set KLNr=Kriteria("K","KLNR") Do SELEDIT(Macro) Kill ^HULP(%J) Quit ; SELECT(%J,Macro) New R,KritTyp Set Macro=$G(Macro,$S($H#7=1:1,1:$H-2#7)) Do MACRO(Macro) Do DISPLAY^vhScherm("EWORDS") Do EDIT^vhScherm("EWORDSS",,,,,1) Set KritTyp="" For Set KritTyp=$O(Kriteria(KritTyp)) Quit:KritTyp="" Do .Set Kriteria="" .For Set Kriteria=$O(Kriteria(KritTyp,Kriteria)) Quit:Kriteria="" Do ..Set R=Kriteria(KritTyp,Kriteria) ..Quit:R="" ..Set ^HULP(%J,"S",KritTyp,Kriteria)=R Kill Kriteria Quit ; SELEDIT(Macro) New %SC,R,Kriteria,KritTyp Set Macro=$G(Macro) If $D(^HULP(%J,KLNr,"M","A")) Quit:$$SAVE()="" Do UNLOCK,CLEAN Do:$L(Macro) INITKR,MACRO(Macro) If $D(Kriteria) Set %SC=1 Else Do .Do INITKR .Merge Kriteria=^HULP(%J,"S") .Do DISPLAY^vhScherm("EWORDS") .Do EDIT^vhScherm("EWORDSS",,,,,1) If %SC Do .For Lock +^HULP(%J,"Q"):0 Quit:$T .Kill ^HULP(%J) .Set ^HULP(%J,"MAXCOUNT")=3 .Set KritTyp="" .For Set KritTyp=$O(Kriteria(KritTyp)) Quit:KritTyp="" Do ..Set Kriteria="" ..For Set Kriteria=$O(Kriteria(KritTyp,Kriteria)) Quit:Kriteria="" Do ...Set R=Kriteria(KritTyp,Kriteria) ...Quit:R="" ...Set ^HULP(%J,"S",KritTyp,Kriteria)=R .Lock -^HULP(%J,"Q") .If $G(^HULP(%J,"S","K","KLNR")) Do ..Set KLNr=^HULP(%J,"S","K","KLNR") ..Set ^HULP(%J,"Q",1)=KLNr ..Do VERWERK(KLNr,,,%J) .Else If $G(^HULP(%J,"S","O","ORDNR")) Do ..Set ORDNr=^HULP(%J,"S","O","ORDNR") ..Do VERWERK(,ORDNr) .Else Do ..Do NEXTKL^EWORDS(%J) ..;Job NEXTKL^EWORDS(%J) ..Set FP=2201 ..Write @FCH,@F,@F1 ..Set FP=160 ..Write @F,@FMTK,"*** I'm thinking ***",@FMTk ..For Quit:$D(^HULP(%J,"Q",1)) Hang 1 ..Write @FCS ..Set FP=160 ..Write @F,@F2 ..If ^HULP(%J,"Q",1)="EOF" Do ...Set R=$$^vhTXTPOP("EWORDS","NOCUSTS"),Input="S" ..Else Do ...Set Count=1,KLNr=^HULP(%J,"Q",Count) ...Do REFRESH(KLNr) Else Do REFRESH(KLNr) Quit ; VERWERK(KLNr,ORDNr,Optie,%J) New R,zb,Last,Count,DefInp,PrevInp,Hulp Set KLNr=$G(KLNr),ORDNr=$G(ORDNr),Optie=$G(Optie),%J=$G(%J),Count=1 If %J,'KLNr Set KLNr=^HULP(%J,"Q",1) Do INITVW,FETCH(KLNr,ORDNr,Optie) If "()"'[$G(DefInp)!'$L($G(DefInp)) Do HOOFDING Do INIT^vhLIST("EWORDS","LIJST",.LD) If ORDNr Do .For LD("SELECT")=1:1 Quit:'$D(^HULP(%J,KLNr,"O",LD("SELECT"))) Quit:$P(^HULP(%J,KLNr,"O",LD("SELECT")),D)=ORDNr .If '$D(^HULP(%J,KLNr,"O",LD("SELECT"))) Set LD("SELECT")=1 .Else Set:Optie["S" DefInp="ENTER" Do WRITE^vhLIST(.LD) If '$D(^HULP(%J,KLNr,"O")) Do .If Optie["A",$L($G(DefInp)),"()"[DefInp Quit .Set R=$$NOORDS(KLNr) Kill Hulp Set Hulp(KLNr)="",R=$$WAARDIG^KREDIET(KLNr,,,,,.Hulp) For Set Input=$S($D(DefInp):DefInp,1:$$SCROLL^vhLIST(.LD)) Do Quit:Input="CANC" .Kill DefInp .Set PrevInp=Input .;Do REFRVERZ .If Input="COM" Set Input="" Do CALL^vhMenu("EWORDS") .If Input="SAVE" Do CLOSE Quit .If Input="(",Optie["A",Optie'["T",Count=1 Write *7 Quit .If Input=")",Optie["A",Optie'["T",$O(^HULP(%J,"Q",Count)),^($O(^HULP(%J,"Q",Count)))="EOF" Write *7 Quit .Do EXEC^vhMenu("EWORDS",.Input) .If '$D(Hulp(KLNr)) Kill Hulp Set Hulp(KLNr)="",R=$$WAARDIG^KREDIET(KLNr,,,,,.Hulp) If Optie'["A",Optie'["T" Kill ^HULP(%J) Quit ; FETCH(KLNr,ORDNr,Optie) New R,Count,OLNr,MarkOrd,OLUNr,EwmsVerw,VerzW,Lock,VerzZ,GewGemWv,PRNr,Beloofd,IsTBX New LevTerm,BufferW,Week,DynTheoS,KomOrd,StockUpd,FysStock,PraStock,TeoStock,Aantal,ResWMS Set KLNr=$G(KLNr),ORDNr=$G(ORDNr),Optie=$G(Optie),VerzW="",(Beloofd,IsTBX)=0 If ORDNr Set KLNr=$P(^KO1(ORDNr,"F"),D),VerzW=$$DEFVERZW(KLNr,ORDNr),Beloofd=$$Beloofd(KLNr,ORDNr),IsTBX=$$ISTBX^FLOWCHK("O",ORDNr) Kill ^HULP(%J,KLNr) For I=0,1 Set ^HULP(%J,KLNr,"K",I)=^KKL(^KK1(KLNr),I) Set Count=0,MarkOrd=ORDNr,ORDNr="" For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:$G(Lock)="K" .Quit:'$$CHKORD^EWORDS5(%J,KLNr,ORDNr,Optie) .Set Lock=$$LOCK(KLNr,ORDNr) .If 'Lock Do Quit ..Quit:Lock'="K" ..If "()"[$G(PrevInp)!'$L($G(PrevInp)) Set DefInp=$S('$L($G(PrevInp)):")",1:PrevInp) ..Kill ^HULP(%J,KLNr,"O") .Set:'Beloofd Beloofd=$$Beloofd(KLNr,ORDNr) .Set:'IsTBX IsTBX=$$ISTBX^FLOWCHK("O",ORDNr) .Set R("O",1)=^KOD(KLNr,"F",ORDNr,1),R("O",3)=^KOD(KLNr,"F",ORDNr,3) .Set:$P(R("O",1),D,7)="" $P(R("O",1),D,7)=$$DEFVERZW(KLNr) .Set:VerzW="" VerzW=$P(R("O",1),D,7) .Set R=ORDNr,$P(R,D,2,3)=$P(R("O",1),D,2,3),$P(R,D,4)=$$LEVADR(R("O",3),20) .Set $P(R,D,5)=$P(R("O",1),D,25),$P(R,D,7)=$P(R("O",1),D,7),$P(R,D,8)=$P(R("O",1),D,16) .Set Count=Count+1,^HULP(%J,KLNr,"O",Count)=R,OLNr=100 .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do ..Set R("O","L")=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R("O","L"),D,2) ..Quit:'PRNr ..If '$P(R("O","L"),D,15) Do ...Do BUILDORD^FLOWORD3(KLNr,ORDNr,OLNr) ...Set R("O","L")=^KOD(KLNr,"F",ORDNr,OLNr) ..Set OLUNr=$P(R("O","L"),D,15),KomOrd=$P(R("O","L"),D,27) Set:'KomOrd KomOrd=$L($P(R("O","L"),D,28)) ..Set EwmsVerw=$D(^ORDW("IO",ORDNr,OLUNr)) ..If EwmsVerw,Optie'["F" Quit ..Set StockUpd=$P(R("O","L"),D,14)'["S" Set:StockUpd StockUpd=$P(R("O","L"),D,14)'["Z" ..If PRNr,'$$MAGHANDEL^PRODUKT2(PRNr) Set StockUpd=0,$P(R("O","L"),D,14)="Z" ..Set R("P",0)=^KPR(PRNr,0),R("P",1)=^KPR(PRNr,1),GewGemWv=$P(R("P",1),D,23),BufferW=$P(R("P",1),D,17) .. ; New ..Set R=$O(^KPR(PRNr,"J")),DynTheoS="",WVTekort="" ..Set LevTerm=6 ..If $E(R)="J" Do ...Quit:$P(R("O","L"),D,3)<0 Quit:'StockUpd ...Set R=^KPR(PRNr,R),LevTerm=$P(R,D,7) ...Set WeekDat=(LevTerm+BufferW)*7+$H ...Set WVStock=$$CV2MAG^MRP(PRNr,$P($G(^PRSTOCK("D",PRNr)),D,5)) Set:WVStock<0 WVStock=0 ...Set WVRes=$$CV2MAG^MRP(PRNr,$P($$VerkoopKinderen^PRODUKT4(PRNr,WeekDat),"\",2)) ...Set WVTekort=$S(KLNr=$$$KlantHalux:"",WVStock1 Count=Count-1 Quit Quit:$$SAVE()="" Do UNLOCK,CLEAN Set KLNr=^HULP(%J,"Q",Count) Do FETCH(KLNr,,Optie) If "()"'[$G(DefInp)!'$L($G(DefInp)) Do HOOFDING Do INIT^vhLIST("EWORDS","LIJST",.LD),WRITE^vhLIST(.LD) If '$D(^HULP(%J,KLNr,"O")) Do .If Optie["A",$L($G(DefInp)),"()"[DefInp Quit .Set R=$$NOORDS(KLNr) Do:$O(^HULP(%J,"Q",Count-1+MaxCount))="" NEXTKL^EWORDS(%J) ;Job:$O(^HULP(%J,"Q",Count-1+MaxCount))="" NEXTKL^EWORDS(%J) Quit ; VWPREV New R If $O(^HULP(%J,"Q",Count),-1)="" Write *7 Quit Quit:$$SAVE()="" Do UNLOCK,CLEAN Set Count=$O(^HULP(%J,"Q",Count),-1),KLNr=^HULP(%J,"Q",Count) If KLNr="EOF" Set Input="-" Quit Do FETCH(KLNr,,Optie) If "()"'[$G(DefInp)!'$L($G(DefInp)) Do HOOFDING Do INIT^vhLIST("EWORDS","LIJST",.LD),WRITE^vhLIST(.LD) If '$D(^HULP(%J,KLNr,"O")) Do .If Optie["A",$L($G(DefInp)),"()"[DefInp Quit .Set R=$$NOORDS(KLNr) Quit ; NEXTKL(%J,MaxCount) New D,I,Count,KLNr,KlantInd,Kriteria Lock +^HULP(%J,"Q"):0 Else Quit Merge Kriteria=^HULP(%J,"S") Set MaxCount=$G(MaxCount,$G(^HULP(%J,"MAXCOUNT"),1)) Set D="\",Count=+$O(^HULP(%J,"Q",""),-1),MaxCount=MaxCount+Count If Count Do Goto NEXTKL1:KLNr="EOF" .Set KLNr=^HULP(%J,"Q",Count) .Set:KLNr'="EOF" KlantInd=^KK1(KLNr) Else Set KlantInd=0 For Set KlantInd=$O(^KKL(KlantInd)) Quit:KlantInd="" Do Quit:Count=MaxCount .If '$D(^HULP(%J)) Set Count=MaxCount Quit .Set KLNr=$P(^KKL(KlantInd,0),D) .Quit:'$$CHKORD^EWORDS5(%J,KLNr) .If '$D(^HULP(%J)) Set Count=MaxCount Quit .Set Count=Count+1,^HULP(%J,"Q",Count)=KLNr Set:KlantInd="" Count=Count+1,^HULP(%J,"Q",Count)="EOF" NEXTKL1 Lock -^HULP(%J,"Q") Quit ; DISPTOER(ToerRef) If $L(ToerRef) Do .If $D(^RES("EWORDS","PI","TOER","D",ToerRef)) Do ..Set ToerRef=$P(^RES("EWORDS","PI","TOER","D",ToerRef),"`",2) .Else Set ToerRef=$TR(ToerRef,";",",") Quit ToerRef ; INIT Set %J=$$%J^vhRtn1(),DOutSend=$G(DOutSend,"?") Kill ^HULP(%J) Set ^HULP(%J,"MAXCOUNT")=3 Do INITKR Quit ; INITKR Set Kriteria("K","KLNR")="" Set Kriteria("K","TOER")="" Set Kriteria("O","ORDNR")="" Set Kriteria("O","WEEK")="" Set Kriteria("O","DAG")="" Set Kriteria("O","LEVNR")="" Set Kriteria("O","VERZ")="" Set Kriteria("O","VERH")="" Set Kriteria("O","OTYP")="" Quit ; INITVW Do:'%J INIT Do:ORDNr .Set:Kriteria("O","OTYP")="" Kriteria("O","OTYP")="+T",^HULP(%J,"S","O","OTYP")="+T" .Set:'KLNr KLNr=$P(^KO1(ORDNr,"F"),D) Quit ; INITSCREEN(Screen) New Rubriek,Rubrieken Do:Screen="S" ; selectiekriteria .Do:$G(Kriteria("K","KLNR"))=7587 ..Set Rubrieken="KLANT\TOER\ORDER\WEEK\DAG\LEVERANC\VERZENDING\VERHOUDING\ORDTYP" ..For Quit:Rubrieken="" Do ...Do PUTATTR^vhScherm($P(Rubrieken,D),"D","D") ...Set Rubrieken=$P(Rubrieken,D,2,99) Quit ; HOOFDING Goto HOOFDING^EWORDS4 ; CHKMENU(Menu,Aktie) Quit $$CHKMENU^EWORDS3(Menu,$G(Aktie)) ; MARKED(R) New ORDNr,OLNr,OLUNr Set ORDNr=$P(R,D),OLNr=$P(R,D,11),OLUNr=$P(R,D,19) Quit $D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) ; RPLKL(KLNr,Screen) Goto RPLKL^EWORDS4 ; RPLPR(Screen) Goto RPLPR^EWORDS4 ; MODORD Goto MODORD^EWORDS4 ; MODTOE Goto MODTOE^EWORDS4 ; RUBREXEC New RubrName,TempKrit If $E(X)="M" Do MACRO($E(X,2,99),1) Quit Set RubrName=$S(X:$$EDITID^vhScherm(X),1:"") If $L(RubrName) Do .Merge TempKrit=Kriteria .If RubrName="KLANT" Do ..New KLNr ..Set X="",KLNr=$$SELECT^KLANT6() ..Quit:'KLNr ..//Kill Kriteria ; geen kill van bestaande kriteria zodat bij default niet alles getoond wordt van de klant. ..Set Kriteria("K","KLNR")=KLNr,X="-" ..Set:$D(TempKrit("O","OTYP")) Kriteria("O","OTYP")=TempKrit("O","OTYP") ..If $G(DOutSend)'="V",$G(DOutSend)'="L" ; Versturen WMS = vragen indien nodig ..Else Do ... ;Set Kriteria("O","WEEK")=TempKrit("O","WEEK") --> omschakeling naar levertermijn op dag ... Set Kriteria("O","DAG")=TempKrit("O","DAG") .If RubrName="ORDER" Do ..New ORDNr,KLNr ..Set X="" ..For Set ORDNr=$$SELECT^FLOW("KOD","KO1",1,1) Quit:'ORDNr Set KLNr=$P($G(^KO1(ORDNr,"F")),D) If KLNr Quit:$D(^KOD(KLNr,"F",ORDNr)) ..Quit:'ORDNr ..Kill Kriteria ..Set Kriteria("O","ORDNR")=ORDNr,X="-" Set:X="-" %SC=1 Quit ; SAVE(NoAsk) New R,Ok,Count,VerzW,VerzDat,DOutDate,DOutTime,VerzZ,LevAdr,CONSNr,Send,ORDNr,ORDNrs,Check,Rembours,ChkBeletDone Set Ok=0 If $D(^HULP(%J,KLNr,"M","A")) Do .Set Ok=$$CheckPalletMaatWerk(%J,KLNr,$G(NoAsk)) .Set:Ok Ok=$$CHKMUNT(%J,KLNr,$G(NoAsk)) .;Do:Ok VERZABX^EWORDS4(%J,KLNr,0) ; blijkbaar niet meer nodig om controle op gewicht uit te voeren. .;If Ok,'$G(NoAsk) Do AnderTransport^EWORDS5(%J) .If Ok,KLNr'=$$$KlantHalux Do AnderTransport^EWORDS5(%J,KLNr) ; altijd uitvoeren niet afhankelijk van NoAsk param, niet voor Halux. .If Ok Set Ok=$G(NoAsk) Set:'Ok Ok=$$^vhTXTPOP("EWORDS","SAVE") .Quit:'Ok .Set CONSNr=$$GETNUM^FLOW("KUL","KU1") ; Tijdelijk .Set R=$G(^HULP(%J,KLNr,"V")) .Set VerzW=$P(R,D),DOutDate=$P($P(R,D,2),","),DOutTime=$P(R,D,3),VerzZ=$P(R,D,4),VerzDat=$P(R,D,5) .Set ORDNr=$O(^HULP(%J,KLNr,"M","A","")) .If ORDNr,$$ISORGAL^FLOW("O",ORDNr) Do ..Set DOutTime=$S(VerzW="DI1":39000,KLNr=1239:39800,1:39600) ; Orgaluxorders DOutTime rond 11u00, eerst SPOOR dan de andere en dan pas Keller (deze laatste moet pas voor de volgende dag) ..If $E(VerzW,1,3)="DI1",$$LAND^vhRtn1(KLNr,"K")="NL" Set DOutTime=DOutTime-600 ; 10 minuten vervroegen voor GLS Nederland .If DOutDate>$H,$E(VerzW,1,2)="TH",'DOutTime Set DOutTime=3600 ; Transfertorders Halux welke niet voor vandaag zijn op 01:00 's morgens zetten .Set:'DOutDate DOutDate=$P($H,",") Set:'DOutTime DOutTime=$P($H,",",2) .Set LevAdr=^HULP(%J,KLNr,"C","LA") .Do BLDCONS^EWORDS2(KLNr,$NA(^HULP(%J,KLNr,"M")),CONSNr,$P(VerzW,";"),VerzDat,DOutDate_","_DOutTime,VerzZ,LevAdr,.ChkBeletDone) ; Creatie suborderlijnen .Set (ORDNr,ORDNrs)="" .For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Set ORDNrs=ORDNrs_";"_ORDNr .Set $E(ORDNrs)="" .Do STORE^LOG("ORDW",CONSNr,"O",ORDNrs) .Set ChkBeletDone=$G(ChkBeletDone) .Do VERWERK^EWORDSS(CONSNr) ; Eventueel opsplitsen in groepen .If $D(^ORDW("D",CONSNr)) Do ; Kan bij terugname niet meer bestaan ..Do ShowKennisAnker^EWORDS5(KLNr,CONSNr,1) ..Do:$$ChkTRANSPORT(CONSNr) TRANSPORT(CONSNr) ..Set R=^ORDW("D",CONSNr) ..Quit:$P(R,D,20)="K" Quit:$P(R,D,20)="B" Quit:$P(R,D,20)="C" Quit:ChkBeletDone="B" ..Set:ChkBeletDone="" Check=$$CHECK^EWORDS3(CONSNr,1),Rembours=$P(Check,D,2) ..If ChkBeletDone="",'Check!Rembours Do BELET^EWORDS3(CONSNr) Quit ..Quit:'$$MagazijnBeschikbaar(CONSNr) ..Set Send=$S($G(DOutSend)="L":0,1:1) ..If Send,DOutDate>$H Do ...Set Send=$S(DOutSend="V":1,1:"") ...Set:Send="" Send=$$^vhTXTPOP("EWORDS","SENDWMS",,$$EXTNUM^vhDTyp(CONSNr,0,".",0),$$EXTDATE^vhDTyp(DOutDate))="V" ..If Send Do ; Doorsturen naar WMS ...Set Send=$$WMSACTIV^EWRECS() ...Do:Send SEND^EWORDSW(CONSNr) .Kill ^HULP(%J,KLNr,"C") Quit Ok ; ; Controle van de facturatiemunt CHKMUNT(%J,KLNr,NoAsk) New R,Ok,ORDNr,OLUNr,OLNr,ChkMunt,OrdMunt Set (ORDNr,ChkMunt)="",Ok=1 For Set ORDNr=$O(^HULP(%J,KLNr,"M","A",ORDNr)) Quit:ORDNr="" Do .Set R=^KOD(KLNr,"F",ORDNr,1),OrdMunt=$P(R,D,18) .Set:ChkMunt="" ChkMunt=OrdMunt If ChkMunt'=OrdMunt Do .Set Ok=0 .Quit:$G(NoAsk) .Set R=$$^vhTXTPOP("EWORDS","CHKMUNT") Quit Ok ; ; Controle palletten maatwerk CheckPalletMaatWerk(%J,KLNr,NoAsk) New R,Ok,ORDNr,OLUNr,OLNr,Aantal,MaatWerk,bl,Lijst,PalletID,Count,Next,TxtPop,Buttons Set ORDNr="",Ok=1 For Set ORDNr=$O(^HULP(%J,KLNr,"M","A",ORDNr)) Quit:ORDNr="" Do . Set OLUNr="" . For Set OLUNr=$O(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) Quit:OLUNr="" Do . . Set OLNr=^ORD("IU",ORDNr,OLUNr) . . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) . . Quit:$P(R,D,3)'>1 ; terugname . . Quit:($P(R,D,14)["Z")||($P(R,D,14)["S") ; Zonder stockaanpassing . . Quit:'$$IsMaatWerk^PRODUKT2(PRNr) . . Set R=^HULP(%J,KLNr,"M","A",ORDNr,OLUNr),Aantal=$P(R,D) . . Set MaatWerk(ORDNr,PRNr)=$G(MaatWerk(ORDNr,PRNr))+Aantal Do:$D(MaatWerk) . Set bl=##class(BL.Prod.ORDW).Instantiate() . Do bl.ControleMaatwerk(.MaatWerk,.Lijst) . Quit:'$D(Lijst) . Set PalletID="",Count=0 . For Set PalletID=$O(Lijst(PalletID)) Quit:PalletID="" Do . . Set Count=Count+1 . . Set:Count>1 TxtPop(Count)="",Count=Count+1 . . Set:$L($G(Lijst(PalletID))) TxtPop(Count)=Lijst(PalletID) . . Set Next="" . . For Set Next=$O(Lijst(PalletID,Next)) Quit:Next="" Do . . . Kill R . . . Set R(1)=Lijst(PalletID,Next) . . . Do GETWRAP^vhBIGEDIT("R",70,.R,"G","~","","") . . . For R=1:1:R Set Count=Count+1,TxtPop(Count)=$P(R(R),"`",5) . Do:Count>20 . . For Count=Count:-1:20 Kill TxtPop(Count) . . Set TxtPop(Count)="..." . Set Buttons(1)="Doorgaan&1",Buttons(2)="Annuleer&0*" . Set Ok=$$WILD^vhTXTPOP("C;C","Palletcontrole","TxtPop","Buttons") Quit $G(Ok,1) ; CLEAN Kill ^HULP(%J,KLNr) Quit ; BEWAAR(Ref) New R,sRec If $D(^HULP(%J,KLNr,"M","A")) Do .Set:$G(Ref) sRec=^HULP(%J,KLNr,"O",Ref) .Set R=$$SAVE(1) .Do UNLOCK,CLEAN .Do FETCH(KLNr,,Optie),INIT^vhLIST("EWORDS","LIJST",.LD) .If $L(sRec) For Ref=1:1 Quit:sRec[$G(^HULP(%J,KLNr,"O",Ref)) .Set LD("SELECT")=Ref .Do WRITE^vhLIST(.LD) Quit ; CLOSE New R Set R=$$SAVE(),Input="" If $L(R) Do .Do UNLOCK,CLEAN .Set Input="CANC" Quit ; VIEW(View) New R If $D(^HULP(%J,KLNr,"M","A")) Quit:$$SAVE()="" Do UNLOCK,CLEAN Set Optie=$TR(Optie,"F","")_$G(View) Do FETCH(KLNr,,Optie),INIT^vhLIST("EWORDS","LIJST",.LD),WRITE^vhLIST(.LD) Quit ; MACRO(Macro,Repaint) New zb,KritTyp,Count Quit:Macro'?.N If Macro="" Do .Set FP=2201 .Write @F,@F1 .Set Macro=$$SELMACRO() If $L(Macro) Do .If Macro'=0,'$D(^EWSEL("ORDS","M"_Macro)) Quit .Set KritTyp="" .For Set KritTyp=$O(Kriteria(KritTyp)) Quit:KritTyp="" Do ..Set Kriteria="" ..For Set Kriteria=$O(Kriteria(KritTyp,Kriteria)) Quit:Kriteria="" Do ...Set R=$G(^EWSEL("ORDS","M"_Macro,KritTyp,Kriteria)) ...If $L(R),"""$"[$E(R) Xecute "Set R="_R ...Set Kriteria(KritTyp,Kriteria)=R .Do:$G(Repaint) REPAINT^vhScherm("") Quit ; SELMACRO() New zb,Macro,Count Set Macro="" For Set Macro=$O(^EWSEL("ORDS",Macro)) Quit:Macro="" Do .Set Macro("F",$E(Macro,2,99))=$P(^EWSEL("ORDS",Macro),"`") Set Macro="",Count=0 For Set Macro=$O(Macro("F",Macro)) Quit:Macro="" Do .Set R=Macro("F",Macro) .If $L(R),"""$"[$E(R) Xecute "Set R="_R .Set R=Macro_"`"_R,Count=Count+1,Macro(Count)=R Kill Macro("F") Set Macro=$$WILD^vhPOPUP("C;C","OK1-","",.Macro) If 'Macro,zb'="CANC" Set Macro=0 Quit Macro ; GETMACRO(Select) New Macro If $G(Select) Do .Set Macro=$$SELMACRO() Else Do .Set Macro=$$SCROLL^vhLIST(.LD,,2) If $L(Macro),$D(^EWSEL("ORDS","M"_Macro))!(Macro=0) Do .Do:$P(^EWSEL("ORDS","M"_Macro),"`",2) ; Macro moet editeerbaar zijn ..Do INITKR,MACRO(Macro) ..Kill ^HULP(%J,"S") ..Merge ^HULP(%J,"S")=Kriteria ..Set Macro="" .Do SELEDIT(Macro) .Set Input="" Else Set Input=Macro Set:Input="-" Input="CANC" Quit ; MODAANT(Ref,ChkKred,Leveren,BackOrd,BoLevWk) New %SC,R,ORDNr,OLNr,Aantal,OLUNr,Quit,Display,LevWk New PRNr,FysStock,ResWMS,KlOLNr,InGroep,BackGrnd,Faktor Quit:'$$CUMORD^EWORDS3(.Ref) Set ChkKred=$G(ChkKred,1),BackGrnd=$D(Leveren) Set R=^HULP(%J,KLNr,"O",Ref),ORDNr=$P(R,D),OLNr=$P(R,D,11) Set PRNr=$P(R,D,12),Aantal=$P(R,D,13),FysStock=$P(R,D,14),OLUNr=$P(R,D,19),LevWk=$P(R,D,18) Set KlOLNr=$P(R,D,35),Faktor=$P(R,D,36) Set:'Faktor Faktor=1 Set ResWMS=$$RESWMS(%J,KLNr,PRNr) Set FysStock=FysStock+$P(^KPR(PRNr,0),D,9)-ResWMS+$P($G(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)),D) Set R=$G(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) Set:'BackGrnd Leveren=$P(R,D),BoLevWk=$P(R,D,4) Set:$L($P(R,D,3)) LevWk=$P(R,D,3) Set:BoLevWk="" BoLevWk=LevWk Set:'Leveren Leveren=Aantal Set Quit=0 Do STORE^vhTERMINA() If ChkKred,'$D(^HULP(%J,KLNr,"M")) Do .Do STORE^vhTERMINA() .Set R=$$WAARDIG^KREDIET(KLNr,,1) .Do REFRESH^vhTERMINA() If 'BackGrnd Do .Quit:'$P(KlOLNr,".",2) .Quit:'$$INGROEP^EWORDS5(ORDNr,KlOLNr) .Quit:'$$CHKGRP^EWORDS5(Ref) .Set InGroep=$$^vhTXTPOP("EWORDS","ALSGROEP","",$P(^KPR(PRNr,0),D))="G" If BackGrnd Do .Set %SC=1,Leveren=Leveren*Faktor .If BackOrd,LeverenFysStock:Leveren,1:FysStock),%SC=0 Else If '$P(KlOLNr,".",2) Do .Set:X'?.N sEr="Foutieve numerieke ingave" .Set:X'>0&$L(X) sEr=$S(Leveren'>0:"",1:"Minimum 1") .Set:X>FysStock sEr="Maximum "_FysStock_" (fys stock)" Else Do .New SLFaktor .Set SLFaktor=Faktor .If X#Faktor Set sEr="Moet een veelvoud zijn van "_Faktor .Else Do ..New I,R,ORDNr,KlOLNr,Faktor,FysStock,PRNr ..Set sEr="" ..Set R=^HULP(%J,KLNr,"O",Ref),ORDNr=$P(R,D),FysStock=$P(R,D,14) ..Set KlOLNr=$P(R,D,35),Faktor=$P(R,D,36) Set:'Faktor Faktor=1 ..For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Do Quit:$L(sEr) ...Set R=^HULP(%J,KLNr,"O",I),PRNr=$P(R,D,12),FysStock=$P(R,D,14),Faktor=$P(R,D,36) Set:'Faktor Faktor=1 ...Quit:$P(R,D)'=ORDNr ...Quit:$P($P(R,D,35),".")'=$P(KlOLNr,".") ...Quit:$P($P(R,D,35),".",3)'=$P(KlOLNr,".",3) ...Set FysStock=FysStock\Faktor*Faktor ...If X#Faktor Set sEr="Moet een veelvoud zijn van "_Faktor ...Else Do ....New KlOLNr ....Set X=X/SLFaktor*Faktor,KlOLNr="" ....Do CHKAANT ....Set X=X*SLFaktor/Faktor ...If sEr["Maximum ",sEr[" (fys stock)" Do ....Set sEr="Maximum "_(FysStock*SLFaktor/Faktor) ....Set sEr=sEr_" (fys stock van """_$P(^KPR(PRNr,0),D)_""" is "_FysStock_")" Quit ; GERAAPT Set FP=2201 Write @F,@F1 For Do FIELD^vhScherm("EWORDSV","DOUTDATE") Quit:X'?.N Do FIELD^vhScherm("EWORDSV","DOUTTIME") Quit:X'="-" Set $P(sFL(1),D,5)=$$CALCZDAT($P(sFL(1),D),$P(sFL(1),D,2)) Do DISPVAL^vhScherm("VERZDATUM") Quit ; TEMPCUST If $D(^HULP(%J,KLNr,"M","A")) Quit:$$SAVE()="" Do UNLOCK,CLEAN Do .New KLNr,Input .Set KLNr=$$SELECT^KLANT6() .Do:KLNr VERWERK(KLNr,,$TR(Optie,"A","")_"T",%J) Do FETCH(KLNr,,Optie) If "()"'[$G(DefInp)!'$L($G(DefInp)) Do HOOFDING Do INIT^vhLIST("EWORDS","LIJST",.LD),WRITE^vhLIST(.LD) Quit ; MODVERZW(VerzW) New %SC,R,sFL If $L($G(VerzW)) Do . Do SETVERZW(KLNr,,VerzW) . Set $P(^HULP(%J,KLNr,"V"),D)=VerzW . New blLeveringsTermijn,blVerzendWijze,GewenstePickDatum Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) . Set DueOutTime = blLeveringsTermijn.blVerzendWijze.DueOutPickingTime() . Set GewenstePickDatum = $P(^HULP(%J,KLNr,"V"),D,2) . If GewenstePickDatum=+$H Do ; indien Pickdatum vandaag . . If DueOutTime < $P($H,",",2) Do ; indien DueOutTime gepasseerd . . . If DueOutTime'>10800,$E(VerzW,1,2)'="TH" Quit ; DueOutTime tot 03:00 en het is geen transfertorder. (transfertorder toch naar volgende arbeidsdag maar met hoogste prioriteit) . . . Set GewenstePickDatum = $$CALCDATE^vhDTyp(,"A",1) ; eerst volgende arbeidsdag . Set $P(^HULP(%J,KLNr,"V"),D,2) = GewenstePickDatum . Set $P(^HULP(%J,KLNr,"V"),D,3)= DueOutTime . Set $P(^HULP(%J,KLNr,"V"),D,5) = blLeveringsTermijn.GetVroegsteLeverDag($S($L(GewenstePickDatum):GewenstePickDatum,1:$H)) . Do DISPLAY^vhScherm("EWORDSH",,,,"VERZWIJZE;GERAAPT;VERZZONE;VERZDATUM") Else Do .Set R=$G(^HULP(%J,KLNr,"V")) .Set:$P(R,D)="" $P(R,D)=$P($$DEFAULT^KLVERZW(,KLNr),";") Set:'$P(R,D,2) $P(R,D,2)=$P($H,",") Set:'$P(R,D,3) $P(R,D,3)=$S($P(R,D)="AFH":3600,1:$P($H,",",2)) .Set sFL(1)=R .Do EDIT^vhScherm("EWORDSV",,,,,,3) .If %SC Do ..Set ^HULP(%J,KLNr,"V")=sFL(1) ..Set ^HULP(%J,"V","V")=sFL(1) ..Do DISPLAY^vhScherm("EWORDSH",,,,"VERZWIJZE;GERAAPT;VERZZONE;VERZDATUM") Quit ; MORGEN New %SC,R,sFL,VerzW,DOutTime Set R=^HULP(%J,KLNr,"V"),VerzW=$P($P($P(R,D),"`"),";") Set DOutTime=$P(^RES("KLANT","PI","VERZENDWIJZE","D",VerzW),"`",4) If $P(R,D,2)=+$H!'$P(R,D,2) Do .Set $P(R,D,2)=$$CALCDATE^vhDTyp(,"A",1) .Set:$$EXTDATE^vhDTyp(,"DWN")=4 $P(R,D,3)=$P($$CALCTIME^vhDTyp(+$H_","_$P(R,D,3),"M",-30),",",2) .Set:'DOutTime $P(R,D,3)=$$INTTIME^vhDTyp("06:00") .Set $P(R,D,5)=$$CALCZDAT($P(R,D),$P(R,D,2)),^HULP(%J,KLNr,"V")=R .Do DISPLAY^vhScherm("EWORDSH",,,,"GERAAPT;VERZDATUM") Quit ; CALCDOUT(VerzW,KLNr,Beloofd,IsTBX) New R,DOutDate,DOutTime,TimeLim,Land Set R=^RES("KLANT","PI","VERZENDWIJZE","D",$P(VerzW,";")),DOutDate=0,DOutTime=$P(R,"`",4),TimeLim=$P(R,"`",5) If $G(Beloofd),'$G(IsTBX),$P(R,"`",13) Set DOutTime=$P(R,"`",13) If $E(VerzW,1,3)="DI1",$$LAND^vhRtn1($G(KLNr),"K")="NL" Set DOutTime=DOutTime-600 Set:TimeLim TimeLim=TimeLim-600 ; 10 minuten vervroegen voor GLS Nederland If $E(VerzW,1,2)="AF",VerzW'="AFW" Set DOutTime=3600 ; Afhalingen op een uur 's nachts zodat deze steeds overal voorkomen If TimeLim Set DOutDate=$P($H,",") Set:$P($H,",",2)>TimeLim DOutDate=$$CALCDATE^vhDTyp($H,"A",1) If $G(DOutSend)="L" Set R=$$CALCDATE^vhDTyp($H,"A",1) Set:R>DOutDate DOutDate=R Set:$G(DOutSend)="V" DOutDate=+$H Quit DOutDate_","_DOutTime ; CALCZDAT(VerzW,DOutDate) New VerzDat Set DOutDate=$P($G(DOutDate,$$CALCDOUT(VerzW)),",") Set VerzDat=$P(^RES("KLANT","PI","VERZENDWIJZE","D",$P(VerzW,";")),"`",7) Set VerzDat=$$CALCDATE^vhDTyp($S(DOutDate:DOutDate,1:$H),"A",VerzDat) Quit VerzDat ; VERZZ(VerzZ,Display) New Position If '$G(Display) Do .Set FP=2201 .Write @F,@F1 .Set Position=$P(sFR,"`",5) Set:$L(VerzZ) Position=Position-$P(^RES("EWORDS","PI","VERZENDZONE","D",VerzZ),"`") .Set Position=Position+17_";"_$P(sFR,"`",6) .Set VerzZ=$$PI^vhPOPUP(Position,"O1-","Verzendzone","EWORDS","VERZENDZONE",VerzZ) Else Set:$L(VerzZ) VerzZ=$P(^RES("EWORDS","PI","VERZENDZONE","D",VerzZ),"`",2) Quit VerzZ ; VERZW(X,MultSel,Compact) New zb,DOutTime,VerzDat Set MultSel=$G(MultSel)_";0",Compact=$G(Compact,1),FP=2201 Write @F,@F1 Set X=$$SELECT^KLVERZW(X,MultSel,Compact) If zb'="CANC",X'=$P(sFL(1),D) Do .Set $P(sFL(1),D)=X,%SC=1 .Set DOutTime=$$CALCDOUT(X),VerzDat=$$CALCZDAT(X,DOutTime) .Do PUT^vhScherm("DOUTDATE",$P(DOutTime,",")),PUT^vhScherm("DOUTTIME",$P(DOutTime,",",2)) .Do PUT^vhScherm("VERZZONE",$P(^RES("KLANT","PI","VERZENDWIJZE","D",$P(X,";")),"`",6)) .Do PUT^vhScherm("VERZDATUM",VerzDat) .Do DISPLAY^vhScherm("EWORDSV",,,,"GERAAPT;VERZZONE;VERZDATUM") Quit ; DEFVERZW(KLNr,ORDNr) New I,R,Default,Kriteria,VerzW,DagNr Set Default=$$DEFAULT^KLVERZW(,$G(KLNr),$G(ORDNr)) Merge Kriteria=^HULP(%J,"S","O") Set R="`"_$G(Kriteria("VERZ")) D:R["`OD;" ; Indien "OD;d" alle verzendwijzen "OD" ophalen voor dag 'd' . Set DagNr=$E(R,$F(R,"`OD;")),VerzW="OD" . For Set VerzW=$O(^RES("KLANT","PI","VERZENDWIJZE","D",VerzW)) Quit:$E(VerzW,1,2)'="OD" If $E(VerzW,3)?.N,R'[("`"_VerzW_";"_DagNr) Set R=R_"`"_VerzW_";"_DagNr . Set $E(R)="",Kriteria("VERZ")=R Set VerzW="",DagNr=$$EXTDATE^vhDTyp($$CALCDATE^vhDTyp($H,"A",1),"DWN") If $L($G(Kriteria("VERZ"))) For I=1:1:$L(Default,"`") Do Quit:$L(VerzW) .Quit:"`"_Kriteria("VERZ")_"`"'[("`"_$P(Default,"`",I)_"`") .Set VerzW=$P(Default,"`",I) If VerzW="",$L(Default,"`")=1 Set VerzW=Default If VerzW="" For I=1:1:$L(Default,"`") If $P($P(Default,"`",I),";",2)=DagNr Set VerzW=$P(Default,"`",I) Quit Set:VerzW="" VerzW="OD"_";"_DagNr Quit VerzW ; NOORDS(KLNr) New KlNaam Set KlNaam=$P(^KKL(^KK1(KLNr),0),D,2) Quit $$^vhTXTPOP("EWORDS","NOORDS","",KlNaam) ; LOCK(KLNr,ORDNr) New %TC,Device,User,Wait,NextDir,DevUser Set FP=501,Wait=0 Write @F,@F1 For Do Quit:'Wait .Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") .If %TC Set Wait=0 Quit .Do:'Wait HOOFDING .Set Device=$$LOCKDEV^vhLock("^KOD(KLNr,""F"",ORDNr)") .Quit:Device=0 .Set User=$P($$USER^vhRtn1(Device),D) .Set DevUser=Device_$S(User=Device:"",1:" - "_User) .If Optie["A" Do ..Set NextDir="Volgende" Set:$G(PrevInp)="(" NextDir="Vorige" ..Set %TC=$$^vhTXTPOP("EWORDS","LOCKALLORD","",$$EXTNUM^vhDTyp(ORDNr,0,".",0),DevUser,NextDir) .Else Do ..Set %TC=$$^vhTXTPOP("EWORDS","LOCKORD","",$$EXTNUM^vhDTyp(ORDNr,0,".",0),DevUser) .Set Wait=%TC="W" Quit %TC ; UNLOCK Lock Quit ; ACTIVATE Do:$P($$ACTIVATE^EWRECS(),D,2) DISPLAY^vhScherm("EWORDS",,,,,1),HOOFDING Quit ; ; Kan een consolidatie opgenomen worden in een transport ChkTRANSPORT(CONSNr) New R,Ok,KLNr,VerzW,VervRef Quit 0 ; Test transport afgesloten Set R=^ORDW("D",CONSNr),KLNr=$P(R,D),VerzW=$P(R,D,2),Ok=VerzW="EX" Do:Ok ; Indien de verzendwijze ok, is er dan een order reeds op transport . Set ORDNr="" . For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do Quit:'Ok . . Set Ok=$P($G(^KOD(KLNr,"F",ORDNr,1)),D,12)="" Quit Ok ; ; Opnemen van een consolidatie in een transport TRANSPORT(CONSNr) New R,KLNr,VerzW,ORDNr,VervRef,GroepNr Do:$$ChkTRANSPORT(CONSNr) . Set R=^ORDW("D",CONSNr),KLNr=$P(R,D),VerzW=$P(R,D,2) . Set VerzW=VerzW_"#"_^RES("KLANT","PI","VERZENDWIJZE","D",VerzW,"N") . Do:$$^vhTXTPOP("EWORDS","TRANSPORT","",$P(VerzW,"#",2),CONSNr,$P(^KKL(^KK1(KLNr),0),D,2)) . . If $D(^KU1(CONSNr)) Do . . Else Do . . . Set (ORDNr,VervRef)="" . . . For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do Quit:$L(VervRef) . . . . Set R=$G(^KOD(KLNr,"F",ORDNr,1)) . . . . Quit:$P(R,D,7)'=$P(VerzW,"#") . . . . Do ##Class(BL.Flow.Cons.TransportFlow).AddOrder(ORDNr) . . . . Set R=^KOD(KLNr,"F",ORDNr,1),VervRef=$P($P(R,D,12),";"),GroepNr=$P($P(R,D,12),";",2) . . . Quit:'VervRef . . . ; Alle orders worden aan het transport gekoppeld . . . Set ORDNr="" . . . For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do . . . . Set R=^KOD(KLNr,"F",ORDNr,1) . . . . Quit:$L($P(R,D,12)) ; Order reeds gekoppeld aan het transport . . . . Do ##Class(BL.Flow.Cons.TransportData).AddOrder(ORDNr,VervRef,GroepNr) Quit ; ; Is een order beloofd Beloofd(KLNr,ORDNr) New Beloofd Set:'$G(KLNr) KLNr=$P(^KO1(ORDNr,"F"),D) Set Beloofd=$P(^KOD(KLNr,"F",ORDNr,1),D,16) Set:'Beloofd Beloofd=$$AUTOBEL^EWBON4(KLNr) Quit Beloofd ; ; Bereken de leverdag van een toer DateToer(Toer) New Dag,DateToer Set Dag=$$EXTDATE^vhDTyp(,"DWN") Set DateToer=$H+(Toer-Dag) Set:Dag'$H,Kriteria("O","DAG")'>($H+7) Set Kriteria("K","TOER")=$$EXTDATE^vhDTyp(Kriteria("O","DAG"),"DWN") . Do DISPVAL^vhScherm("TOER") Quit ; ; Zijn alle magazijnen voor alle oders van deze consolidatie beschikbaa? MagazijnBeschikbaar(CONSNr) New MagazijnBeschikbaar,ORDNr Set MagazijnBeschikbaar=1,ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Set MagazijnBeschikbaar=$$MagazijnBeschikbaar^EWORDS6(ORDNr,0) Quit:'MagazijnBeschikbaar Quit MagazijnBeschikbaar ; ; Controle van de voorraad bij het doorsturen naar het WMS cwCheckStock(CONSNr) New R,KLNr,ORDNr,OLUNr,PRNr,Aantal,FysStock,Stock,ResWMS,From,To,Subject,Body Set ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do . Set OLUNr="" . For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do . . Set R=^ORDW("D",CONSNr,"D",ORDNr,OLUNr),PRNr=$P(R,D),Aantal=$P(R,D,4) . . If PRNr,$D(^KPR(PRNr)) Do . . . Set FysStock=$P(^KPR(PRNr,0),D,14),ResWMS=$P(^KPR(PRNr,0),D,9) . . . Set:ResWMS>FysStock Stock(OLUNr)=ORDNr_D_PRNr_D_FysStock_D_ResWMS_D_Aantal Do:$D(Stock) ; Er zijn problemen . Set From=$ZUTIL(110)_"@VANHOECKE.BE",To=$LB("CW@VANHOECKE.BE") . Set KLNr=$P($G(^ORDW("D",CONSNr)),D),Subject="Voorraadcontrole in EWORDSW" . Set Body="Er werden fouten gevonden in de levering "_CONSNr . If KLNr,$D(^KK1(KLNr)) Set Body=Body_" van "_KLNr_" "_$P(^KKL(^KK1(KLNr),0),D,2) . Set Body=Body_"!"_$C(13) . Set Body=Body_$C(13)_"Order Lijn Korttekst Fys stock Res WMS Gevr aant" . Set Body=Body_$C(13)_"------ ---- ------------------------- --------- --------- ---------" . Set OLUNr="" . For Set OLUNr=$O(Stock(OLUNr)) Quit:OLUNr="" Do . . Set R=Stock(OLUNr),ORDNr=$P(R,D),PRNr=$P(R,D,2),FysStock=$P(R,D,3),ResWMS=$P(R,D,4),Aantal=$P(R,D,5) . . Set KortText=$P(^KPR(PRNr,0),D) . . Set Body=Body_$C(13)_ORDNr_$J(OLUNr,8)_$J(KortText,30)_$J(FysStock,15)_$J(ResWMS,15)_$J(Aantal,15) . Set R=$$SendMiniMail^vhLib(From,To,Subject,Body) Quit ; ;