EWRCPF ;E'WMS receptie feedback [ 11/29/2003 8:15 AM ] Q CONTROL(C) ; Feedback van E'WMS betreffende het recepteren van een subreceptielijn ; Opgeroepen door EWRECR ; C wordt opgeroepen via .Local New RCPNr,BONNr,LUNr,SubLNr,MSubLNr,Qty,SubRec,MSubRec Set RCPNr = ##class(BL.MB.UGLYPicking.General).GeefReceptieId( C("RCPNR") ) Set BONNr=C("BONNR") Set LUNr=C("RCPLNR")\100 Set MSubLNr=C("RCPLNR")#100*100 ; Master SubLijn If RCPNr,BONNr,LUNr,MSubLNr,$D(^RCP("D",RCPNr,"D",BONNr,LUNr,MSubLNr)) Else Do ERROR^EWLOG($T(NOSUBOL)) Quit Set MSubRec=^RCP("D",RCPNr,"D",BONNr,LUNr,MSubLNr) Set SubLNr=MSubLNr+C("RCPLSPLITSNR") ; Specifieke SubLijn Lock +^RCP("D",RCPNr) If $$CHECKERR(RCPNr,BONNr,LUNr) Lock -^RCP("D",RCPNr) Quit Set Qty=C("DELTAIN") Set SubRec=$G(^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)) If $G(^EWLOG("DEBUG"))=2 Write !,@FMTB,"C05:",RCPNr,";",BONNr,";",LUNr,";",SubLNr,@FMTb,!,SubRec If SubRec="" Do ; Nieuw Record, dit record wordt gegenereerd op het moment dat er een nieuwe record zich aanmeldt .Set SubRec=$P(MSubRec,D,1) .Set $P(SubRec,D,2)="W" If C("STATUS")="RNOK" Do STATRNOK ; Receptie NIET OK Else If C("ACTIE")="A" Do ACTIEA ; Receptie volledig of het resterend gedeelte annuleren Else If C("ACTIE")="W" Do ACTIEW ; Receptie wissen=alle slavelijnen wissen Else If C("ACTIE")="B" Do ACTIEB ; Receptie bijvoegen Else If C("ACTIE")="D" Do ACTIED ; Receptie wissen=1 slavelijn Set:SubRec'="" ^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)=SubRec If $G(^EWLOG("DEBUG"))=2 Write !,SubRec Do QTYSTAT(RCPNr,BONNr,LUNr) Lock -^RCP("D",RCPNr) Quit CHECKERR(RCPNr,BONNr,LUNr) ; Nakijken of de status van de lijn mag veranderd worden If $P(^RCP("D",RCPNr,"D",BONNr,LUNr),D,2)="I" Do Quit 1 .Set $P(^RCP("D",RCPNr,"D",BONNr,LUNr),D,3)="e" .Set $P(^RCP("D",RCPNr),D,21)="e" .Do ERROR^EWLOG($T(INGEBOE)) Quit 0 STATRNOK ; Produkt niet gekend, Status = RNOK Do:C("RCPLSPLITSNR") ERROR^EWLOG($T(CTRRNOK)) ; Kan alleen maar bij Masterlijn Set $P(SubRec,D,2)="E" Set $P(SubRec,D,6)=C("DATUM") Quit ACTIEA ; Actie = A ; Annuleren van het restaantal, indien er te weinig goederen zijn dan de rest annuleren. New TotQty,TempLNr Set TotQty=0 Set TempLNr=MSubLNr-1 For Set TempLNr=$O(^RCP("D",RCPNr,"D",BONNr,LUNr,TempLNr)) Quit:TempLNr=""!(TempLNr\100*100'=MSubLNr) Do .Set TotQty=TotQty+$P(^RCP("D",RCPNr,"D",BONNr,LUNr,TempLNr),D,4) If $P(MSubRec,D,3)'>TotQty Do ; Er zijn voldoende goederen gecontroleerd, Actie=A niet mogelijk .Do ERROR^EWLOG($T(ACTA)) .Set SubRec="" Else If TotQty Do ; Er zijn goederen .Set SubLNr=MSubLNr,SubRec=MSubRec .Set $P(SubRec,D,2)="Q" ; Invullen in de master lijn .Set $P(SubRec,D,6)=C("DATUM") Else Do ; Er zijn geen goederen .Set $P(SubRec,D,2)="G" .Set $P(SubRec,D,6)=C("DATUM") Quit ACTIEW ; Actie = W; Wissen van de gecontroleerde goederen. Het wissen kan totdat er goederen zijn gestockeerd New TotQty,TempLNr Set TotQty=0 Set TempLNr=MSubLNr-1 For Set TempLNr=$O(^RCP("D",RCPNr,"D",BONNr,LUNr,TempLNr)) Quit:TempLNr=""!(TempLNr#100*100'=MSubLNr) Do .Set:$L($P(^RCP("D",RCPNr,"D",BONNr,LUNr,TempLNr),D,7)) TotQty=TotQty+$P(^RCP("D",RCPNr,"D",BONNr,LUNr,TempLNr),D,4) If TotQty Do ERROR^EWLOG($T(ACTW)) Set $P(SubRec,d,2)="e" Quit ; Er zijn reeds goederen gestockeerd, Actie=W niet mogelijk Set SubLNr=MSubLNr For Set SubLNr=$O(^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)) Quit:SubLNr=""!(SubLNr\100*100'=MSubLNr) Do .Kill ^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr) Set SubLNr=MSubLNr,SubRec=MSubRec Set $P(SubRec,D,2)="W" ; Terug gewist Set $P(SubRec,D,4)="" Set $P(SubRec,D,6)="" Set $P(SubRec,D,9)="" Quit ACTIED ; Actie = D; Wissen van een sublijn. If $L($P(SubRec,D,5)) Do ERROR^EWLOG($T(ACTD)) Set $P(SubRec,D,2)="e" Quit ; Reeds gestockeerd If SubLNr=MSubLNr Do ; Masterlijn .Set $P(SubRec,D,2)="W" ; Terug gewist .Set $P(SubRec,D,4)="" .Set $P(SubRec,D,6)="" .Set $P(SubRec,D,9)="" Else Do ; Slavelijn .Kill ^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr) .Set SubRec="" Quit ACTIEB ;Bijvoegen van het gecontroleerde aantal Set $P(SubRec,D,2)="C" ; Controle bezig Set $P(SubRec,D,4)=$P(SubRec,D,4)+Qty Set $P(SubRec,D,6)=C("DATUM") Set $P(SubRec,D,9)=C("PALETID") Set $P(SubRec,D,13)=C("USERID") Quit QTYSTAT(RCPNr,BONNr,LUNr) ; Cumulatie receptielijn en status ; De aantallen van de sublijnen cumuleren en doorgeven aan de receptielijn, rekening houdend met moeder->kindproducten ; De status/errormelding van de sublijn propageren naar receptielijn en verder naar receptiehoofding New SubLNr,Qty,MinQty,MaxQty,MPRNr,KPRNr,RCPRec,LRec,SubRec,MKQty,SKQty,CKQty,RCPLCnt,StatCnt,RCPLStat,FStat,EStat,LEStat,LFStat,Factor Set LRec=^RCP("D",RCPNr,"D",BONNr,LUNr) If $G(^EWLOG("DEBUG"))=2 Write !,LRec Set SubLNr="" Set KPRNr="" Set RCPLStat="" Set RCPLCnt=0 For Set SubLNr=$O(^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)) Quit:SubLNr="" Do .Set RCPLCnt=RCPLCnt+1 .Set SubRec=^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr) .Set KPRNr=$P(SubRec,D,1) .Set MKQty(KPRNr)=$G(MKQty(KPRNr))+$P(SubRec,D,3) .Set CKQty(KPRNr)=$G(CKQty(KPRNr))+$P(SubRec,D,4) .Set SKQty(KPRNr)=$G(SKQty(KPRNr))+$S($P(SubRec,D,7)'="":$P(SubRec,D,4),1:0) ; Goederen ook opgeslagen .Set:"W"'[$P(SubRec,D,2) StatCnt($P(SubRec,D,2))=$G(StatCnt($P(SubRec,D,2)))+1 ; De StatCnt kan volgende waarden hebben "C"=Controle,"Q"=Qty verschil,"G"=Geen gevonden,"E"=RNOK en "e"=Systeem fout ;Gecontroleerde goederen Set KPRNr="" Set MPRNr=$P(LRec,D,1) Do Moeder2KindRecursief^PRBS(MPRNr,.Factor) Set MinQty=999999999 Set MaxQty=-1 For Set KPRNr=$O(CKQty(KPRNr)) Quit:KPRNr="" Do .Set Qty=CKQty(KPRNr)\$P($G(Factor(KPRNr),1),D) .Set:QtyMaxQty MaxQty=Qty Set:MinQty=999999999 MinQty=0 Set:MaxQty=-1 MaxQty=0 Set $P(LRec,D,5)=MinQty Set $P(LRec,D,2)=$S($G(StatCnt("e"))+$G(StatCnt("E"))+$G(StatCnt("G"))++$G(StatCnt("Q"))=RCPLCnt:"C",$D(StatCnt):"P",1:"W") If $P(LRec,D,2)="P",MinQty'<$P(LRec,D,4) Set $P(LRec,D,2)="C" ; Indien partieel maar het gecontroleerde is groter dan gevraagde dan toch C=volledig gecontroleerd Set $P(LRec,D,3)=$S($G(StatCnt("e")):"e",$G(StatCnt("E")):"E",$G(StatCnt("G")):"G",$G(StatCnt("Q")):"Q",1:"") If $P(LRec,D,2)="C",";e;E;G;"'[(";"_$P(LRec,D,3)_";"),$P(LRec,D,4)'=MinQty Set $P(LRec,D,3)="Q" ; Quantiteitsverschil bij controle If $P(LRec,D,2)="C",";e;E;G;"'[(";"_$P(LRec,D,3)_";"),MinQty'=MaxQty Set $P(LRec,D,3)="K" ; Quantiteitsverschil, meer bepaald Kind verschil ; Gestockeerde goederen Set KPRNr="" Set MinQty=999999999 Set MaxQty=-1 For Set KPRNr=$O(SKQty(KPRNr)) Quit:KPRNr="" Do .Set Qty=SKQty(KPRNr)\$P($G(Factor(KPRNr),1),D) .Set:QtyMaxQty MaxQty=Qty Set:MinQty=999999999 MinQty=0 Set:MaxQty=-1 MaxQty=0 Set $P(LRec,D,8)=MinQty If $P(LRec,D,2)="I" Do ERROR^EWLOG($T(INBOEK)) If $P(LRec,D,8),$P(LRec,D,8)=$P(LRec,D,4),$P(LRec,D,2)'="I" Set $P(LRec,D,2)="S" ; Alles opgeslagen, maar nog niet ingeboekt If ($P(LRec,D,2)="S")!($P(LRec,D,2)="I"),";e;E;G;"'[(";"_$P(LRec,D,3)_";"),$P(LRec,D,8)'=MinQty Set $P(LRec,D,3)="Q" ; Quantiteitsverschil bij opslag If ($P(LRec,D,2)="S")!($P(LRec,D,2)="I"),";e;E;G;"'[(";"_$P(LRec,D,3)_";"),MinQty'=MaxQty Set $P(LRec,D,3)="K" ; Quantiteitsverschil, meer bepaald Kind verschil Set ^RCP("D",RCPNr,"D",BONNr,LUNr)=LRec If $$IsUrgent^FLOWTOE(BONNr,LUNr),$L($P(LRec,D,2)),"SI"[$P(LRec,D,2) Do ; Urgentie en gestockeerd (of ingeboekt) : 5 min. wachten om gebruiker te verwittigen .Lock +^RCP("URG",RCPNr) .Set ^RCP("URG",RCPNr)=$H,^RCP("URG",RCPNr,BONNr,LUNr)=$$ORDGEG^FLOWTOE(,BONNr) ; Voor het versturen van de mail .Lock -^RCP("URG",RCPNr) If $G(^EWLOG("DEBUG"))=2 Write !,LRec ; Propageren van de status naar orderhoofding Set RCPRec=^RCP("D",RCPNr) If $G(^EWLOG("DEBUG"))=2 Write !,RCPRec Set LFStat=$P(LRec,D,2) Set LEStat=$P(LRec,D,3) Set FStat=$P(RCPRec,D,20) Set EStat=$P(RCPRec,D,21) Set:$F("QKGES",EStat)<$F("QKGES",LEStat) EStat=LEStat Set:FStat="W" FStat="P" If FStat="I"!(FStat="A") Set EStat="e" Do ERROR^EWLOG($T(OLSTAT)) Set $P(RCPRec,D,20)=FStat Set $P(RCPRec,D,21)=EStat Set ^RCP("D",RCPNr)=RCPRec If $G(^EWLOG("DEBUG"))=2 Write !,RCPRec Quit STOCK(C) ; Feedback van E'WMS betreffende stockage van de gecontroleerde goederen ; Opgeroepen door EWRECR ; C wordt opgeroepen via .Local New RCPNr,BONNr,LUNr,SubLNr,Qty,SubRec Set RCPNr = ##class(BL.MB.UGLYPicking.General).GeefReceptieId( C("RCPNR") ) Set BONNr=C("BONNR") Set LUNr=C("RCPLNR")\100 Set SubLNr=C("RCPLNR")#100*100+C("RCPLSPLITSNR") If RCPNr,BONNr,LUNr,SubLNr,$D(^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)) Else Do ERROR^EWLOG($T(NOSUBOL)) Quit Lock +^RCP("D",RCPNr) If $$CHECKERR(RCPNr,BONNr,LUNr) Lock -^RCP("D",RCPNr) Quit Set Qty=C("DELTAIN") Set SubRec=$G(^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)) If SubRec="" Do ERROR^EWLOG($T(NOSOL)) If $G(^EWLOG("DEBUG"))=2 Write !,@FMTB,"C06:",RCPNr,";",BONNr,";",LUNr,";",SubLNr,@FMTb,!,SubRec If C("STATUS")="RNOK" Do ; Receptie NIET OK .Set $P(SubRec,D,2)="E" .Set $P(SubRec,D,6)=C("DATUM") ; Mag niet de stockagedatum zijn Else Do .If $P(SubRec,D,4)'=Qty Set $P(SubRec,D,2)="S" Do ERROR^EWLOG($T(BADQTY)) .If $P(SubRec,D,2)="G"!($P(SubRec,D,2)="E") Set $P(SubRec,D,2)="S" Do ERROR^EWLOG($T(BADSTAT)) .Do:$P(SubRec,D,4)'=Qty ERROR^EWLOG($T(DIFFQTY)) ; Verschil controle <>stockage .Set $P(SubRec,D,4)=Qty ; C06 is de waarheid C05 geeft slechts een hint .Set $P(SubRec,D,5)=C("PALETID") .Do:'$$GOODPALID^EWPAL($P(SubRec,D,1),C("PALETID")) ERROR^EWLOG($T(FOUTPAL)) .Set $P(SubRec,D,7)=C("DATUM") ;.Set $P(SubRec,D,8)=C("STOCKAGEPLAATS") If $G(^EWLOG("DEBUG"))=2 Write !,SubRec Set ^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)=SubRec Do QTYSTAT(RCPNr,BONNr,LUNr) If $G(^RCP("AUTO")),$D(^RCP("D",RCPNr)) Do .New VerwAant,WMSAant,SubLNr,SubRec,WaitTime,RcpRec,Rec .Set RcpRec=^RCP("D",RCPNr) .Quit:$P(RcpRec,D)="K" ; Terugname .Set Rec=^RCP("D",RCPNr,"D",BONNr,LUNr) .If $L($P(Rec,D,3)) Quit ; Er is een probleem .Set (VerwAant,WMSAant)=0,SubLNr="" .For Set SubLNr=$O(^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr)) Quit:SubLNr="" Do ..Set SubRec=^RCP("D",RCPNr,"D",BONNr,LUNr,SubLNr) ..Set VerwAant=VerwAant+$P(SubRec,D,3),WMSAant=WMSAant+$P(SubRec,D,4) .If VerwAant,WMSAant,VerwAant=WMSAant Do ..Set WaitTime=$$WAITTIME() ..Set ^RCP("AUTO",RCPNr,BONNr,LUNr)=$P($H,",",2)\(WaitTime/2)*(WaitTime/2) Lock -^RCP("D",RCPNr) Quit END(C) ; Feedback van E'WMS betreffende afsluiten van de ganse receptie ; Opgeroepen door EWRECR ; C wordt opgeroepen via .Local New RCPNr,BONNr,LUNr,RCPRec,RCPStat,LRec,Status,OLStat If C("STATUS")'="ROK" Do Quit ; Terugmelding bij het terugtrekken van een order .Do ERROR^EWLOG($T(RCPCANC)) Set RCPNr = ##class(BL.MB.UGLYPicking.General).GeefReceptieId( C("RCPNR") ) If RCPNr,$D(^RCP("D",RCPNr)) Else Do ERROR^EWLOG($T(NORCP)) Quit Lock +^RCP("D",RCPNr) Set RCPRec=^RCP("D",RCPNr) If $G(^EWLOG("DEBUG"))=2 Write !,@FMTB,"C07:",RCPNr,@FMTb,!,RCPRec Set RCPStat=$P(RCPRec,D,20) If C("STATUS")="POK",RCPStat'="P" Do .Do ERROR^EWLOG($T(RCPSTAT)) .Set $P(RCPRec,D,21)="e" ; Systeemfout Set (BONNr,LUNr)="" Set RCPLStat="" For Set BONNr=$O(^RCP("D",RCPNr,"D",BONNr)) Quit:BONNr="" Do .For Set LUNr=$O(^RCP("D",RCPNr,"D",BONNr,LUNr)) Quit:LUNr="" Do ..Set LRec=^RCP("D",RCPNr,"D",BONNr,LUNr) ..Set Status=$P(LRec,D,2),ErrStat=$P(LRec,D,3) ..If Status'="S",Status'="I",ErrStat'="E",ErrStat'="G" Do ...Set RCPLStat=RCPLStat_";"_LUNr_":"_Status ...Set $P(LRec,D,2)="S" ; Forceer op afgewerkt ...Set $P(LRec,D,3)="e" ; Systeemfout ...Set ^RCP("D",RCPNr,"D",BONNr,LUNr)=LRec If RCPLStat'="" Do .Do ERROR^EWLOG($T(RCPSTAT2)) .Set $P(RCPRec,D,21)="e" ;Systeemfout Set $P(RCPRec,D,20)="A" Set $P(RCPRec,D,23)=C("EINDDAT") If $G(^EWLOG("DEBUG"))=2 Write !,RCPRec Set ^RCP("D",RCPNr)=RCPRec If $G(^RCP("AUTO")),$D(^RCP("D",RCPNr)) Do CHKAUTO(RCPNr) Do CHKISTAT^EWTOE(RCPNr) Lock -^RCP("D",RCPNr) Quit MAILHAL(Mail) ; Doorgeven van Kom-toelvering is gerecepteerd New R,MailId,KlantId,KLNr,KlNaam,ORDNr,RCPNr,Text,Link,TCount,LCount,OCount,RCount Do:$D(Mail("I")) ; Afgewerkte orders (recepties) .Kill Text,Link .Set TCount=1,(LCount,OCount)=0,KlantId="" .For Set KlantId=$O(Mail("I",KlantId)) Quit:KlantId="" Do ..Set R=^KKL(KlantId,0),KLNr=$P(R,D),KlNaam=$P(R,D,2),ORDNr="" ..For Set ORDNr=$O(Mail("I",KlantId,ORDNr)) Quit:ORDNr="" Do ...Set OCount=OCount+1,TCount=TCount+1 ...Set Text(TCount)="~"_ORDNr Set:$L(KlNaam) Text(TCount)=Text(TCount)_" - "_KlNaam ...Set:$L(KlNaam) LCount=LCount+1,Link(LCount)="KL\"_KLNr_"\R\O" ...Set LCount=LCount+1,Link(LCount)="ORD\"_ORDNr_"\R" ...Set KlNaam="" .Set Text(1)="Volgend" Set:OCount>1 Text(1)=Text(1)_"e" .Set Text(1)=Text(1)_" order" Set:OCount>1 Text(1)=Text(1)_"s" .Set Text(1)=Text(1)_$S(OCount=1:" is",1:" zijn")_" klaar:~" .Set MailId=$$SYSTEM^vhMAIL("","Order"_$S(OCount=1:"",1:"s"),"Halux","HALORDOK",.Text,.Link,"U","A") Do:$D(Mail("E")) ; Foutieve recepties .Kill Text,Link .Set TCount=1,(LCount,RCount)=0,RCPNr="" .For Set RCPNr=$O(Mail("E",RCPNr)) Quit:RCPNr="" Do ..Set RCount=RCount+1,TCount=TCount+1,Text(TCount)="~"_RCPNr ..Set LCount=LCount+1,Link(LCount)="EWRCPST\"_RCPNr_"\R" .Set Text(1)="Volgende receptie" Set:RCount>1 Text(1)=Text(1)_"s" .Set Text(1)=Text(1)_$S(RCount=1:" is",1:" zijn")_" foutief:~" .Set MailId=$$SYSTEM^vhMAIL("","Receptie"_$S(RCount=1:"",1:"s"),"Halux","HALRCPERR",.Text,.Link,"U","A") Quit CHKURG ; Doorgeven van BON die klaar is voor afhaling New Txt,Lnk,RCPNr,ObjTyp,ObjRef,BONNr,ULNr,LRec,TUserId,PRNr,OrderCreatedBy,MPRNr,ORDNr,ORDNrsHiPrio,ORDNrsLoPrio,KLNr Set RCPNr="",TUserId="19;1109;58" ; VDR;NPO;JDB For Set RCPNr=$O(^RCP("URG",RCPNr)) Quit:RCPNr="" Do .Quit:$$DIFFTIME^vhDTyp(^RCP("URG",RCPNr),$H)<400 ; 5 min wachten .Quit:'$D(^RCP("D",RCPNr)) .Lock +^RCP("URG",RCPNr) .Set ObjTyp=$P(^RCP("D",RCPNr),D),ObjRef=$P(^RCP("D",RCPNr),D,2) .Set Txt=1,Txt(1)="Volgend produkt van receptie "_RCPNr_" werd gestockeerd :" .Set (BONNr,ULNr)="" .For Set BONNr=$O(^RCP("URG",RCPNr,BONNr)) Quit:BONNr="" Do ..For Set ULNr=$O(^RCP("URG",RCPNr,BONNr,ULNr)) Quit:ULNr="" Do ...Set LRec=$G(^RCP("D",RCPNr,"D",BONNr,ULNr)) ...Quit:LRec="" ...Set PRNr=$P(LRec,D),KortTxt=$P(^KPR(PRNr,0),D) ...Set Txt=Txt+1,Txt(Txt)="~ "_KortTxt ...Set ORDNr=$P(^RCP("URG",RCPNr,BONNr,ULNr),D) ...; Door wie is het Kom-order gecreëerd? Deze krijgt de mail ook ...Set:'ORDNr ORDNr=$P($$ORDGEG^FLOWTOE(,BONNr),D) ...Set OrderCreatedBy="" ...Do:ORDNr ....Set OrderCreatedBy=$P($$OrderCreatedBy^FLOWORD(ORDNr),"#"),KLNr=$P($G(^KO1(ORDNr,"F")),D) ....Set Txt(Txt)=Txt(Txt)_$J("",30-$L(KortTxt))_"("_ORDNr_$S(KLNr:" - "_$P(^KKL(^KK1(KLNr),0),D,2),1:"")_")" ....Set ORDNrsHiPrio(ORDNr)="" ...Do:OrderCreatedBy ....Quit:$$IsGroep^vhUSER(OrderCreatedBy,"VTW") ; Niet voor VTW's ....Set:";"_TUserId_";"'[(";"_OrderCreatedBy_";") TUserId=TUserId_";"_OrderCreatedBy ...Do UrgMailTUserId(PRNr,.TUserId,.ORDNrsLoPrio) ...; Halffabrikaat in productie? ...Set MPRNr="" ...For Set MPRNr=$O(^PRBS("IP",PRNr,MPRNr)) Quit:MPRNr="" Quit:$D(^TO("IP",MPRNr)) ...If MPRNr,";"_TUserId_";"'[";58;" Set TUserId=TUserId_";58" ; In prodductie dus ook mail naar JDB .Set Lnk=1,Lnk(1)="EWRCPST\"_RCPNr_"\W" .Set:ObjTyp="K" Lnk=2,Lnk(2)="KL\"_ObjRef_"\R" .Do:$D(ORDNrsHiPrio)!$D(ORDNrsLoPrio) ..Set Txt=Txt+1,Txt(Txt)="~~Volgende orders komen hiervoor in aanmerking:",ORDNr="" ..For Set ORDNr=$O(ORDNrsHiPrio(ORDNr)) Quit:ORDNr="" Do ...Set KLNr=$P($G(^KO1(ORDNr,"F")),D) ...If KLNr Set Txt=Txt+1,Txt(Txt)="~"_ORDNr_" - "_$P(^KKL(^KK1(KLNr),0),D,2)_" - "_$$USERNAME^vhUSER($P($$OrderCreatedBy^FLOWORD(ORDNr),"#"),-1) ...Set Lnk=Lnk+1,Lnk(Lnk)="ORD\"_ORDNr_"\R\" ...Kill ORDNrsLoPrio(ORDNr) ..For Set ORDNr=$O(ORDNrsLoPrio(ORDNr)) Quit:ORDNr="" Do ...Set KLNr=$P($G(^KO1(ORDNr,"F")),D) ...If KLNr Set Txt=Txt+1,Txt(Txt)="~"_ORDNr_" - "_$P(^KKL(^KK1(KLNr),0),D,2)_" - "_$$USERNAME^vhUSER($P($$OrderCreatedBy^FLOWORD(ORDNr),"#"),-1) ...Set Lnk=Lnk+1,Lnk(Lnk)="ORD\"_ORDNr_"\R\" .Set MailId=$$SYSTEM^vhMAIL($S(ObjTyp="L":"LE",1:"KL"),ObjRef,"Urgentie receptie",TUserId,.Txt,.Lnk,"U","A") .Kill ^RCP("URG",RCPNr) .Lock -^RCP("URG",RCPNr) .Do:$D(^RCP("AUTO",RCPNr)) CHKAUTO(RCPNr) Quit CHKAUTO(RCPNr) New R,LRec,WaitTime,LEVNr,TOENr,TLUNr,SetTime,Mail,KlantId,KLNr,ORDNr,OneRCP If $G(^RCP("AUTO")) Do .Set WaitTime=$$WAITTIME(),RCPNr=$G(RCPNr),OneRCP=''RCPNr .For Set:'OneRCP RCPNr=$O(^RCP("AUTO",RCPNr)) Quit:RCPNr="" Do Quit:OneRCP ..Set R=^RCP("D",RCPNr),LEVNr=$P(R,D,2),TOENr="" ..For Set TOENr=$O(^RCP("D",RCPNr,"D",TOENr)) Quit:TOENr="" Do ...If '$D(^KTO(LEVNr,TOENr)) Do Quit ;Onbestaande .... Kill ^RCP("AUTO",RCPNr,TOENr) .... ;Do ERROR^EWLOG($T(AUTODEL)) ...Set R=^KTO(LEVNr,TOENr,1),KLNr=$P(R,D,8),ORDNr=$P(R,D,7),TLUNr="" ...For Set TLUNr=$O(^RCP("D",RCPNr,"D",TOENr,TLUNr)) Quit:TLUNr="" Do ....If '$D(^TO("IU",TOENr,TLUNr)) Do Quit ;Onbestaande ..... Kill ^RCP("AUTO",RCPNr,TOENr,TLUNr) ..... ;Do ERROR^EWLOG($T(AUTODELL)) ....If 'OneRCP Quit:'$D(^RCP("AUTO",RCPNr,TOENr,TLUNr)) Do Quit:SetTime>($P($H,",",2)-WaitTime) ..... Set SetTime=^RCP("AUTO",RCPNr,TOENr,TLUNr) ..... Set:$P(SetTime,",",2) SetTime=$P(SetTime,",",2) ....Set LRec=$G(^RCP("D",RCPNr,"D",TOENr,TLUNr)) ....If $P(LRec,D,2)="I" Kill ^RCP("AUTO",RCPNr,TOENr,TLUNr) Quit ....If $P(LRec,D,2)="S",$P(LRec,D,3)="",$P(LRec,D,8)=$P(LRec,D,4) Do .....Do TLUNR^EWTOE(RCPNr,TOENr,TLUNr,,1,1) .....Quit:LEVNr'=6332 ; Order is klaar verwittigen via mail - enkel indien Halux ..... ; Indien de receptie volledig is ingeboekt, het order is voor vandaag en het order kan niet automatisch doorgestuurd worden, ..... ; dan het orden opnemen om te werwittigen via mail. .....If KLNr,$P(^RCP("D",RCPNr),D,20)="I" Do ......If $$GetPickDatum^EWORDS6(ORDNr)'<$H Quit:$$IsVoorVandaagOfMorgen^EWORDS6(ORDNr)'=1 ......Quit:$$CheckAutoSend^EWORDS6(ORDNr) ......Set KlantId=^KK1(KLNr),Mail("I",KlantId,ORDNr)="" ....Else Set:LEVNr=6332 Mail("E",RCPNr)="" ; Enkel indien Halux ....Kill ^RCP("AUTO",RCPNr,TOENr,TLUNr) Do:$D(Mail) MAILHAL(.Mail) Quit WAITTIME() New WaitTime Set WaitTime=$S($P($H,",",2)<(16*3600):30,1:5)*60 Quit WaitTime ; Ophalen van de gebruikers naar wie de urgente mail moet verzonden worden UrgMailTUserId(PRNr,TUserId,ORDNrsLoPrio) New R,KLNr,ORDNr,PRI2 Set PRI2="W" For Set PRI2=$O(^KPR(PRNr,PRI2)) Quit:$E(PRI2)'="W" Quit:$E(PRI2,9)'="R" Do . Set R=^KPR(PRNr,PRI2),LevWk=$P(R,D,2) . If LevWk?5N Quit:LevWk>$H . Else Quit:$$INTDATE^vhDTyp(LevWk,"DW")>$$CALCDATE^vhDTyp(,"W") . Set ORDNr=$E(PRI2,18,23) . Quit:'ORDNr . Set KLNr=$P(^KO1(ORDNr,"F"),D) . Quit:'KLNr Quit:'$D(^KOD(KLNr,"F",ORDNr)) . Set OrderCreatedBy=$P($$OrderCreatedBy^FLOWORD(ORDNr),"#") . Set:";"_TUserId_";"'[(";"_OrderCreatedBy_";") TUserId=TUserId_";"_OrderCreatedBy . Set ORDNrsLoPrio(ORDNr)="" Set:$E(TUserId)=";" $E(TUserId)="" Quit ; Errormeldingen AUTODEL ;"Autoreceptie verwijderd toelevering bestaat niet:"_RCPNr_";"_TOENr AUTODELL ;"Autoreceptie verwijderd toelevering bestaat niet:"_RCPNr_";"_TOENr_";"_TLUNr ACTA ;"Er is voldoende gecontroleerd ACTIE=A kan niet:"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_MSubRec ACTW ;"Er zijn reeds goederen gestockeerd, ACTIE="W" kan niet:"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_MSubRec ACTD ;"De goederen zijn gestockeerd, ACTIE="D" kan niet:"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_MSubRec BADQTY ;"SubRCPlijn bevindt zich in een foutieve status :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_SubRec_";"_Qty CTRRNOK ;"RNOK kan alleen bij een masterlijn :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_SubRec BADSTAT ;"SubRCPlijn bevindt zich in een foutieve status :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_SubRec NOSUBOL ;"Key's foutief :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR") NOSOL ;"SubRecord bestaat niet :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR") NOKEY ;"Foutieve gegevens :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_$G(C("RCPLNR")) PNOK ;"Splitsnr verschillend van nul en Status=PNOK :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR") INBOEK ;"Reeds ingeboekt geen status verandering meer :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR") WISERR ;"Wissen receptie maar sommige sublijnen zijn reeds geStockeerd :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_C("STATUS")_";"_SubLNr INGEBOE ;"Reeds ingeboekt:"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR") FOUTPAL ;"Foutieve paletId:"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR")_";"_C("PALETID") OLSTAT ;"Statussen door elkaar:"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_FStat_";"_LFStat FULL ;"Full markering ontvangen terwijl er nog een lijn vrij staat :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR"))_";"_C("FULLPARTIAL")_";"_C(STATUS) QTYNEG ;"Bij opsplitsing negatief aantal :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";"_C("RCPLSPLITSNR") RCPCANC ;"Terugmelding voor CancelReceptie. Het verwijderen van een Receptie (deel of gans) wacht normaal op dit antwoord :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("STATUS") RCPSTAT ;"De status in Receptie is foutief moet ""P"" zijn :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("STATUS")_";"_RCPStat RCPSTAT2 ;"De status van sommige receptielijnen zijn nog niet afgesloten :"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_RCPLStat NORCP ;"Receptie bestaat niet :"_$G(C("VOLGNR"))_";"_C("RCPNR") DIFFQTY ;"Qty verschil bij stockage tov. controle:"_$G(C("VOLGNR"))_";"_C("RCPNR")_";"_C("BONNR")_";"_C("RCPLNR")_";Ctr:"_$P(SubRec,D,4)_";Stock:"_Qty