EWPAL ;E'WMS Paletinformatie [ 11/29/2003 8:10 AM ] Quit ; #Include %occInclude #Include Prod.Product #include BL.Derde.LevSpecifiek ; CHANGE(PRLijst) ; Vervangen van oud product met nieuw product ; Via .Local doorgeven PRLijst(VanPRNr)=NaarPRNr ; Ask = "V" ; Vragen New MPRNr,BSCode,BSRec,KPRNr,Lock,%J Write @F11,@F1 Write @FMTI," EWMS Inventory : Vervang product - ",QN," ",@FMTi If '$D(PRLijst) Do ASK^PRBSC(.PRLijst) Quit:'$D(PRLijst) Set FromPRNr="" For Set FromPRNr=$O(PRLijst(FromPRNr)) Quit:FromPRNr="" Do . Set ToPRNr=PRLijst(FromPRNr) . Write !,$P($G(^KPR(FromPRNr,0),$G(^KPRO(FromPRNr,0),"*ONBEKEND* "_FromPRNr)),D),"->",$P($G(^KPR(ToPRNr,0),$G(^KPRO(ToPRNr,0),"*ONBEKEND* "_ToPRNr)),D) . Do . . New (FromPRNr,ToPRNr,QU) . . Set Result=##class(BL.MB.UGLYPicking.Opslag).ChangeProductInEWMS(FromPRNr,ToPRNr,QU) . . Write !," ",$LG(Result,2),! Read !,"Einde (Druk op ENTER)",K Quit ; Versturen van een transportaanvraag van een pallet ; uit het automatisch magazijn naar de pickpost 1 of 2, ugly of transit ; Optioneel : Reden en Prioriteit SendTransport(LocId,To,Reden,Prioriteit) Quit:$G(LocId)="Geen loc id " Set:To["PICKPOST" To="PIKPOST "_$P(To," ",2) Quit:To'?1(1"PIKPOST 1",1"PIKPOST 2",1"TRANSIT",1"UGLY") "Verkeerd to" Lock +SendTransport:20 Else Quit "Vergendeld door andere gebruiker" Set Call="TP1" Set Call("PALLETID")=LocId Set Call("TO")=$G(To) Set Call("PRIO")=$S($G(Prioriteit)="":8,1:Prioriteit) Set Call("REDEN")=$G(Reden) Set AnswerSelect="TP2" Set AnswerSelect("PALLETID")=LocId Set WH=$$ZENDWAIT^EWRECW("Call","AnswerSelect") Do GET^EWRECW(WH,"Answer") Lock -SendTransport Quit:$G(Answer("STATUS"))="" "Geen antwoord" Set Status=$G(Answer("STATUS")) Set:Status="OK" Status="" Quit Status RCPPAL(PRNr,PalId,ORDNr,OLUNr,Qty) If $G(PRNr) Quit:$$OPSLMAN^PRODUKT2(PRNr) Set ORDNr=$G(ORDNr) Set OLUNr=$G(OLUNr)\10*10 ; Basis OLUNr = zonder backorder info Do ADDPAL(PRNr,PalId,Qty) If $L(PalId),ORDNr,OLUNr Set ^EWPAL("D",PRNr,PalId,ORDNr,OLUNr)="" Quit ; SELPAL(PRNr,ORDNr,OLUNr,Qty) ; Opsporen van de PalId waartoe het order behoort. New R,PalId,PalIds,PalQty,TotQty,OrdQty If $G(PRNr) Quit:$$OPSLMAN^PRODUKT2(PRNr) "" Set ORDNr=$G(ORDNr) Set OLUNr=$G(OLUNr)\10*10 ; Basis OLUNr = zonder backorder info Set (PalId,PalIds)="" If 'ORDNr!'OLUNr Quit "" For Set PalId=$O(^EWPAL("D",PRNr,PalId)) Quit:PalId="" Do .Quit:'$D(^EWPAL("D",PRNr,PalId,ORDNr,OLUNr)) .Set PalIds=PalIds_";"_PalId Quit $E(PalIds,2,999) ; selpal(PRNr,ORDNr,OLUNr,Qty) ; Deze routine doet te veel (houdt rekening met hoeveelheid) New R,PalId,PalIds,PalQty,TotQty,OrdQty If $G(PRNr) Quit:$$OPSLMAN^PRODUKT2(PRNr) "" Set ORDNr=$G(ORDNr) Set OLUNr=$G(OLUNr)\10*10 ; Basis OLUNr = zonder backorder info Set Qty=$G(Qty,999999999) Set PalId="" For Set PalId=$O(^EWPAL("D",PRNr,PalId)) Quit:PalId="" Do .Set (PalQty,OrdQty)=0 .If ORDNr,OLUNr Do ..Quit:'$D(^EWPAL("D",PRNr,PalId,ORDNr,OLUNr)) ..Set PalQty=$$ORDQTY(PRNr,PalId,ORDNr,OLUNr) .Else If ORDNr Do ..Quit:'$D(^EWPAL("D",PRNr,PalId,ORDNr)) ..Set OLUNr="" ..For Set OLUNr=$O(^EWPAL("D",PRNr,PalId,ORDNr,OLUNr)) Quit:OLUNr="" Do ...Set PalQty=PalQty+$$ORDQTY(PRNr,PalId,ORDNr,OLUNr) .Else Set R=^EWPAL("D",PRNr,PalId),PalQty=$P(R,D),OrdQty=$$ORDQTY(PRNr,PalId) .Set PalQty=PalQty-OrdQty Set:PalQty PalId(PalQty,PalId)="" Set PalQty="" For Set PalQty=$O(PalId(PalQty)) Quit:PalQty="" Quit:PalQty'4)!($TR($E(OpslagPl,4,99),"0 ","")="") Do OPSLAGPL(PRNr,PalId,OpslagPl) ; Palet niet in AUTO,UGLY,Langgoed of Transit Do PALID(PRNr,PalId,OpslagPl) ;Controle op foutieve paletkode Do TOTPAL(PRNr,PalId,Qty,OpslagPl,Date,Sectie) ; Wijzigen paletaantal Set:'$D(^KPR(PRNr,"J"_$$$LevBlum))&&($P(^KPR(PRNr,2),D,16) PRSTOCK",$P($G(^KPR(PRNr,0)),D),17,.Tekst,.Lnk,"U","A") .Set $P(^PRSTOCK("D",PRNr),D,1)=FysStock ; correctie If +FysStock'=+TotFysSt Do ; Verschil tussen Admin en WMS .Do ERROR^EWLOG($T(TOTSTOCK)) .Set AddQty=TotFysSt-FysStock .Do MAILSTCK(PRNr,AddQty,,"N.S.") .Set TempQty=AddQty .Set ModTyp=3 Set:AddQty<0 ModTyp=4,AddQty=-AddQty .Do ADDSTOCK(PRNr,AddQty,ModTyp,,Reden,,,,"N") ; Fys. Stock en historiek aanpassen .Set:$D(^PRLINK("IKM",PRNr)) ^EWPAL("M",PRNr)=TempQty ; De moeders worden pas gecontroleerd als alle kinderen verwerkt zijn ;Opslaan van gewicht en samplecode ;If Gewicht Do ; Tijdelijk geen gewicht aanpassingen .Set R=^KPR(PRNr,1) Set:$P(R,D,13)'=Gewicht/1000 $P(R,D,13)=Gewicht/1000,^KPR(PRNr,1)=R Set R=^KPR(PRNr,2) Set:$P(R,D,12)'=SampTyp $P(R,D,12)=SampTyp,^KPR(PRNr,2)=R ; de wijzing ^KPR moet niet doorgegeven worden aan het WMS Set:$L(PalId) R=^EWPAL("D",PRNr,PalId),$P(R,D,10)=1,^EWPAL("D",PRNr,PalId)=R ; Passed Quit ; ENDCTRL ; Einde nachtelijke stockscan, opgeroepen door S03^EWRECR New R,PRNr,PalId,Passed,ORDNr,OLUNr,FysStock,ModTyp,Reden,TestOLU,StockSum,Qty,TempQty Set PRNr="" For Set PRNr=$O(^EWPAL("D",PRNr)) Quit:PRNr="" Do .If $L(PRNr),$D(^KPR(PRNr)) .Else Kill ^EWPAL("D",PRNr) Quit ; Product werd verwijderd dus ook verwijderen uit EWPAL .If $$OPSLMAN^PRODUKT2(PRNr) Kill ^EWPAL("D",PRNr) Quit ; Manueel .If $D(^EWPAL("D",PRNr))=1 Kill ^EWPAL("D",PRNr) Quit ; Opkuis Correctie informatie .If $D(^PRLINK("D",PRNr)) Do ; Een moederproduct mag geen pallet informatie hebben .. New Tekst,Lnk,MailId .. Set Tekst(1)="Een moederproduct kan geen palletinformatie hebben !" .. Set Tekst(2)="~"_$P(^KPR(PRNr,0),D)_" ("_PRNr_")" .. Set Tekst=2 .. Set Lnk(1)="PR\"_PRNr_"\R" .. Set MailId=$$SYSTEM^vhMAIL("","Moeder met palletinfo",$P($G(^KPR(PRNr,0)),D),17,.Tekst,.Lnk,"U","A") .Set PalId="" .Set StockSum=0 .For Set PalId=$O(^EWPAL("D",PRNr,PalId)) Quit:PalId="" Do ..Set R=^EWPAL("D",PRNr,PalId),Passed=$P(R,D,10) ..If 'Passed Kill ^EWPAL("D",PRNr,PalId) Quit ; Verwijderen van de PalId's waarvoor geen stock meer bestaat ..Set StockSum=StockSum+$P(R,D) ..Set ORDNr="" ..;Verwijderen order indien order niet meer bestaat ..For Set ORDNr=$O(^EWPAL("D",PRNr,PalId,ORDNr)) Quit:ORDNr="" Do ...If '$D(^ORD("IP",PRNr,ORDNr)) Kill ^EWPAL("D",PRNr,PalId,ORDNr) Quit ; Product zit niet meer in order dus order verwijderen uit EWPAL ...;Nakijken of de basis OLUNr nog in het order zit ...Set OLUNr="" ...For Set OLUNr=$O(^ORD("IP",PRNr,ORDNr,OLUNr)) Quit:OLUNr="" Do ....Set TestOLU(OLUNr\10*10)="" ; Basis OLUNr = zonder backorder info ...Set OLUNr="" ...For Set OLUNr=$O(^EWPAL("D",PRNr,PalId,ORDNr,OLUNr)) Quit:OLUNr="" Do ...If OLUNr Kill:'$D(TestOLU(OLUNr)) ^EWPAL("D",PRNr,PalId,ORDNr,OLUNr) ..Set R=^EWPAL("D",PRNr,PalId),$P(R,D,10)="",^EWPAL("D",PRNr,PalId)=R .If $D(^EWPAL("D",PRNr)),StockSum,StockSum'=($P(^KPR(PRNr,0),D,14)-$$CORR^EWPAL2(PRNr)) Do DIFFQTY(PRNr,StockSum,$P(^KPR(PRNr,0),D,14)-$$CORR^EWPAL2(PRNr)) ; Voor alle producten die niet in EWPAL zitten is de stock=0 Set PRNr=0,Reden="Corr WMS" For Set PRNr=$O(^KPR(PRNr)) Quit:PRNr="" Do .Quit:$D(^EWPAL("D",PRNr))>1 Quit:$D(^PRLINK("D",PRNr)) .Quit:$$OPSLMAN^PRODUKT2(PRNr) .Set R=^KPR(PRNr,0),FysStock=$P(R,D,14) .Quit:'FysStock .Do ERROR^EWLOG($T(NOSTOCK)) .Do MAILSTCK(PRNr,-FysStock,,"N.S.") .Set TempQty=FysStock .Set ModTyp=4 Set:FysStock<0 ModTyp=3,FysStock=-FysStock .Do ADDSTOCK(PRNr,FysStock,ModTyp,,Reden,,,,"N") .Set:$D(^PRLINK("IKM",PRNr)) ^EWPAL("M",PRNr)=TempQty ; Gewijzigde produkten met moeders verwerken Set PRNr="" For Set PRNr=$O(^EWPAL("M",PRNr)) Quit:PRNr="" Do .Set Qty=^EWPAL("M",PRNr) .Do MOEDER(PRNr,Qty,Reden,.Mail,"N") Kill ^EWPAL("M") Do:$D(Mail) MMAIL(.Mail) Set $P(^EWPAL("D"),D,2)=$H ; Eindtijdstip Do MAIL^EWLOG(+$H,"EWPAL",,,"17") ; Fouten doormailen Quit ; STOCK(C) ; CycleCount stockcorrectie opgeroepen door S01^EWRECR New R,PRNr,Qty,TempQty,MailQty,TotFysSt,PalId,ModTyp,Reden,Mail,User Set PRNr=C("PRNR"),(Qty,MailQty)=C("DELTA"),PalId=C("PALETID"),Reden=C("REDEN"),User=C("USER") If $L(PRNr),$D(^KPR(PRNr)) Else Do ERROR^EWLOG($T(NOPROD)) Quit If $G(PRNr) Quit:$$OPSLMAN^PRODUKT2(PRNr) Do ADDPAL(PRNr,PalId,Qty) Set TempQty=Qty Set ModTyp=3 Set:Qty<0 ModTyp=4,Qty=-Qty If Reden="CYCLECOUNT" Do .New TempPal .Set TempPal=PalId .For Quit:$E(TempPal)'="0" Set $E(TempPal)="" .Set Reden="C/C "_TempPal If $G(^EWREC("P","INVENTARIS")) Do .Set Reden="INV "_$$EXTDATE^vhDTyp($H,"J4") Do:+Qty'=0&&'$G(^EWREC("P","INVENTARIS"))&&(Reden'="**") MAILSTCK(PRNr,MailQty,,"C/C",PalId,Reden,User,$D(Mail)) ; Niet bij inventaris en optimalisatie(Reden="**") ;Do:+Qty'=0&'$G(^EWREC("P","INVENTARIS")) MAILSTCK(PRNr,MailQty,,"C/C",PalId,Reden,User,$D(Mail)) ; Niet bij inventaris en optimalisatie(Reden="**") Do ADDSTOCK(PRNr,Qty,ModTyp,$H,Reden,PalId,Qty,User,$S(+$G(C("AUTOCC")):"D",1:"M")) Do:+Qty'=0&&'$G(^EWREC("P","INVENTARIS"))&&(Reden'="**") MOEDER(PRNr,TempQty,Reden,.Mail,$S(+$G(C("AUTOCC")):"D",1:"M")) ; niet bij inventars en optimalisatie(Reden:"**") Quit ; ADDPAL(PRNr,PalId,AddQty) ; Bijvoegen of weghalen van een aantal op een palet New R Quit:PalId="" Quit:$$OPSLMAN^PRODUKT2(PRNr) Set R=$G(^EWPAL("D",PRNr,PalId)) Set:R="" $P(R,D,3)=+$H Set $P(R,D)=$P(R,D)+AddQty Set ^EWPAL("D",PRNr,PalId)=R Quit ; TOTPAL(PRNr,PalId,TotQty,OpslagPl,Date,Sectie) ; Wijzigen van het aantal stuks op een palet, wordt opgeroepen door de nachtelijke stockcontrole New R Quit:PalId="" Quit:$$OPSLMAN^PRODUKT2(PRNr) Set R=$G(^EWPAL("D",PRNr,PalId)) Set:R="" $P(R,D,3)=+$H ; Nieuwe palet voor dit product Set $P(R,D)=TotQty,$P(R,D,2)=OpslagPl,$P(R,D,4)=Date Set $P(R,D,5)=Sectie Set ^EWPAL("D",PRNr,PalId)=R Quit ; ADDSTOCK(PRNr,AddQty,ModTyp,Date,Reden,BronPal,Delta,User,Actie,Magazijn) ; Wijzigen fys. stock en historiek New FysStock Quit:$$OPSLMAN^PRODUKT2(PRNr) Set Date=$G(Date,+$H),BronPal=$G(BronPal),User=$G(User),FysStock=$P(^KPR(PRNr,0),D,14) Do .If ModTyp#2,FysStock+AddQty'<0 Quit .If '(ModTyp#2),FysStock-AddQty'<0 Quit .Do ERROR^EWLOG($T(NEGSTOCK)) Do MODSTOCK^PRODUKT4(PRNr,AddQty,,ModTyp,Date,Reden,,,,BronPal,$G(Delta),User,$G(Actie),.Magazijn) Quit ; MAILSTCK(PRNr,AddQty,Perc,From,PalId,Reden,User,MMail) ; Mail versturen als de stock aanpassing meer dan x% is New Tekst,MailId,Lnk Set Perc=$G(Perc,-9999999) ; Default 5% If $S($P(^KPR(PRNr,0),D,14):$S(AddQty<0:-AddQty,1:AddQty)/$P(^KPR(PRNr,0),D,14)*100,1:100)'0 Do ...Set MPRNr=$P($$CMOEDER(KPRNr,1),D) ;Ophalen duurste moeder ...Quit:'MPRNr ...Set ModTyp=3 ...Do MAILSTCK(MPRNr,Qty,,"K-M",,Reden) ...Do ADDSTOCK(MPRNr,Qty,ModTyp,,Reden,,,,Actie,"K") ..Else Do ...Set MPRNrs=$$CMOEDER(KPRNr,,1),TempNr=$P(MPRNrs,",") ;Ophalen reeks moeders, goedkoopste eerst ...Set ModTyp=4,Qty=-Qty ...For Set MPRNr=$P(MPRNrs,","),MPRNrs=$P(MPRNrs,",",2,99) Quit:'MPRNr Do Quit:Qty'>0 ....Quit:$$OPSLMAN^PRODUKT2(MPRNr) ....Set MprStock=$P(^KPR(MPRNr,0),D,14),IsStock=$P(^KPR(MPRNr,1),D,20) ....Quit:'IsStock ....If MprStock(FysStock\Faktor) Qty=FysStock\Faktor Quit $S(Qty=999999999:0,1:Qty) ; STOCKOVERKIND(KPRNr) ; Nakijken of ALLE moeders STOCK OVER KINDEREN zijn Set MPRNr="" Set SOK=1 For Set MPRNr=$O(^PRBS("IP",KPRNr,MPRNr)) Quit:MPRNr="" Do Quit:'SOK . Set SOK=$$$ProductGet(MPRNr,$$$LinkType)="S" ; stock over kinderen Quit SOK MMOEDER(MPRNr) ; Nakijken of de broertjes geen andere moeder hebben New KPRNr,KMPRNr Set KPRNr="" For Set KPRNr=$O(^PRLINK("D",MPRNr,KPRNr)) Quit:KPRNr="" Do Quit:KMPRNr .Set KMPRNr=$O(^PRLINK("IKM",KPRNr,"")),KMPRNr=$O(^PRLINK("IKM",KPRNr,KMPRNr)) Set KMPRNr=+$G(KMPRNr)>0 Quit KMPRNr ; SMOEDER(KPRNr) ; Nakijken of alle moeders van een kind slechts een en datzelfde kind hebben New MPRNr,MMoeder Set (MPRNr,MMoeder)="" For Set MPRNr=$O(^PRLINK("IKM",KPRNr,MPRNr)) Quit:MPRNr="" Do Quit:MMoeder .Set MMoeder=$O(^PRLINK("D",MPRNr,"")),MMoeder=$O(^PRLINK("D",MPRNr,MMoeder)) Quit 'MMoeder ; ;Dir : 0 = Minimum voor- en maximum achteraan ; 1 = Minimum achter- en maximum vooraan ;Serie : 0 = Minimum\Maximum ; 1 = Minimum,xxxx,yyyy,zzzz,Maximum CMOEDER(KPRNr,Dir,Serie) ; Bepalen moeder met minimum en maximum CiffPPL New MPRNr,CPPL,MPRNrs Set Dir=$P("1\-1",D,$G(Dir)+1),Serie=$G(Serie),MPRNr="" For Set MPRNr=$O(^PRLINK("IKM",KPRNr,MPRNr)) Quit:MPRNr="" Do .Set CPPL=$P($$PRIJSGEG^KPRIJS(MPRNr),D,6) .Set CPPL(+CPPL,MPRNr)="" Set (CPPL,MPRNrs)="" If Serie Do .For Set CPPL=$O(CPPL(CPPL),Dir) Quit:'CPPL Do ..Set MPRNr="" ..For Set MPRNr=$O(CPPL(CPPL,MPRNr),Dir) Quit:MPRNr="" Set MPRNrs=MPRNrs_","_MPRNr .If $L(MPRNrs) Set $E(MPRNrs)="" Set:$L(MPRNrs,",")=1 MPRNrs=MPRNrs_","_MPRNrs Else Do .Set CPPL=$O(CPPL(""),Dir) .Quit:'CPPL .Set MPRNrs=$O(CPPL(CPPL,""),Dir),CPPL=$O(CPPL(""),-Dir),MPRNrs=MPRNrs_D_$O(CPPL(CPPL,""),-Dir) Quit MPRNrs ; ORDQTY(PRNr,PalId,ORDNr,OLUNr) ; opgeroepen door SELPAL om een orderlijn New R,OrdQty,KLNr,OLNr,OneLine Set ORDNr=$G(ORDNr),OLUNr=$G(OLUNr) Set (OneLine,OrdQty)=0 If ORDNr,OLUNr Set OneLine=1 Set:'OneLine ORDNr="" For Set:'OneLine ORDNr=$O(^EWPAL("D",PRNr,PalId,ORDNr)) Quit:ORDNr="" Do Quit:OneLine .Set:'OneLine OLUNr="" .For Set:'OneLine OLUNr=$O(^EWPAL("D",PRNr,PalId,ORDNr,OLUNr)) Quit:OLUNr="" Do Quit:OneLine ..Quit:'$D(^EWPAL("D",PRNr,PalId,ORDNr,OLUNr)) ..Set OLNr=$G(^ORD("IP",PRNr,ORDNr,OLUNr)) ..Quit:'OLNr ..Set KLNr=$P($G(^KO1(ORDNr,"F")),D) ..Quit:'KLNr ..Set R=$G(^KOD(KLNr,"F",ORDNr,OLNr)),OrdQty=OrdQty+$P(R,D,3) Quit OrdQty ; MMAIL(PRNrs) New R,Tekst,Sort,SortKey,Count,MailId,Lnk,PRNr Set PRNr="" For Set PRNr=$O(PRNrs(PRNr)) Quit:PRNr="" Do .Quit:$$OPSLMAN^PRODUKT2(PRNr) .Set SortKey=$$SORTKEY^PRODUKT(PRNr),Sort(SortKey)=PRNr Set SortKey="",Count=1,Lnk=0 For Set SortKey=$O(Sort(SortKey)) Quit:SortKey="" Do .Set PRNr=Sort(SortKey),R=^KPR(PRNr,0),KortText=$P(R,D) .Set Count=Count+1,Tekst(Count)=KortText_"~" .Set Lnk=Lnk+1,Lnk(Lnk)="PRLINKS\"_PRNr_"\W" Set R="De voorraad van volgend" Set:Count>2 R=R_"e" Set R=R_" moederprodukt" Set:Count>2 R=R_"en" Set R=R_" kon niet aangepast worden,~een van "_$S(Count>2:"hun",1:"haar") Set R=R_" kinderen heeft meerdere moeders.~~" Set Tekst(1)=R Set Count=Count+1,Tekst(Count)="~Gelieve hiervoor aktie te ondernemen!!!" Set MailId=$$SYSTEM^vhMAIL("","Moederprodukten","Voorraad","EWPAL",.Tekst,.Lnk,"U","A") Quit ; RAADPL(PRNr,RPLPR) New %J,LD,InitList Set RPLPR=$G(RPLPR) If 'RPLPR Quit:'$D(^EWPAL("D",PRNr)) Set %J=$$%J^vhRtn1(),InitList=1 Kill ^HULP(%J) Do STORE^vhTERMINA() Do DISPLAY^vhScherm("EWPALRPLPR") Set GlobRef="Actueel" For Do Quit:"XD"'[Input .If GlobRef="Actueel" Do ..Do FETCHACT(PRNr,%J) ..Do:InitList INIT^vhLIST("EWPAL","RPLPRACT",.LD) .Else Do ..Do FETCH(PRNr,%J) ..Do:InitList INIT^vhLIST("EWPAL","RPLPR",.LD) .Do WRITE^vhLIST(.LD) .Set Input=$$SCROLL^vhLIST(.LD),InitList=0 .Do:Input="SPEC" ..Do CALLSPEC^vhMenu(LD("POS")+LD("SELECT")-1_";80","EWPALSPEC") .If Input="X" Do RPLDAT(PRNr) .If Input="D" Do RPLPROD($P($G(^HULP(%J,LD("SELECT"))),D,1),GlobRef="Actueel") Do REFRESH^vhTERMINA() Kill ^HULP(%J) Set:RPLPR VTB=$G(U4),SW2=0,R=Input Quit ; RPLDAT(PRNr) New Y,Z,X,Key Set:'$G(PRNr) PRNr="*" Set Y=2,Y(1)="1`Actueel : ",Z(1)="Actueel",X=1 Set Y(2)="2`Huidig : "_+$P($G(^EWPAL("D",PRNr)),";"),Z(2)=$NA(^EWPAL("D")) Set:Z(2)=GlobRef X=2 Set Key="" For Set Key=$O(^EWPAL("O",Key),-1) Quit:Key="" Do .Set Y=Y+1,Y(Y)=Y_"`"_$$EXTDATE^vhDTyp($P(Key,"."))_$S($L($P(Key,".")):" "_$$EXTTIME^vhDTyp($P(Key,".",2)),1:"")_": "_+$P($G(^EWPAL("O",Key,PRNr)),";"),Z(Y)=$NA(^EWPAL("O",Key)) .Set:Z(Y)=GlobRef X=Y Set X=$$WILD^vhPOPUP("C;C","2O-","Oude gegevens+reservatie",.Y,X) If X Set InitList=$S(GlobRef'=Z(X):1,1:0),GlobRef=Z(X) Quit RPLPROD(PalId,Actueel) New PRNr,Y,Result,Query,Status Quit:'$L(PalId) Set Y=0 If Actueel Do ; Actueel .Set Query="EWMS.Inventory:GetProductsOnPallet" .Set Result=##class(%ResultSet).%New(Query) .Set Status=Result.Execute(PalId) .If $$$ISERR(Status) Do WARN^vhTXTPOP("Query werkt niet, verwittig ICT ~"_$$ParseStatus^vhLIB(Status)) Quit .For Quit:'Result.Next() Do .. Set PRNr=$$TRIMN^vhRtn1($G(Result.Data("ProductNr"))) .. Set Y=Y+1,Y(Y)=$J($S(PRNr:$P($G(^KPR(PRNr,0)),D),1:""),25)_" | "_$$EXTNUM^vhDTyp(+Result.Data("QtyPcs"),7,".",0) Else Do ; Huidig en volgende .Set PRNr="" .For Set PRNr=$O(@GlobRef@(PRNr)) Quit:PRNr="" Do:$D(@GlobRef@(PRNr,PalId)) ..Set Y=Y+1,Y(Y)=$P($G(^KPR(PRNr,0)),D)_" | "_$$EXTNUM^vhDTyp($P(@GlobRef@(PRNr,PalId),D),7,".",0) Set:Y Y=$$WILD^vhTXTPOP("C;C","Palet : "_PalId,"Y") Quit FETCH(PRNr,%J) New R,Rec,PalId,PalQty,OpslagPl,KreaDat,KLNr,ORDNr,OLUNr,OLNr,OLNr,OrdQty,Count Set PalId="",Count=0 Kill ^HULP(%J) For Set PalId=$O(@GlobRef@(PRNr,PalId)) Quit:PalId="" Do .Set R=@GlobRef@(PRNr,PalId) .Set PalQty=$P(R,D),OpslagPl=$P(R,D,2),KreaDat=$P(R,D,3) .Set Rec=PalId,$P(Rec,D,2)=PalQty,$P(Rec,D,3)=OpslagPl,$P(Rec,D,4)=KreaDat .Set ORDNr="" .For Set ORDNr=$O(@GlobRef@(PRNr,PalId,ORDNr)) Quit:ORDNr="" Do ..Set KLNr=$P($G(^KO1(ORDNr,"F")),D) ..Quit:'KLNr ..Set $P(Rec,D,6)=KLNr,$P(Rec,D,5)=ORDNr,OLUNr="" ..For Set OLUNr=$O(@GlobRef@(PRNr,PalId,ORDNr,OLUNr)) Quit:OLUNr="" Do ...If '$D(^ORD("IP",PRNr,ORDNr,OLUNr)) Set OrdQty="" Quit ; Orderlijn bestaat niet meer ...Set OLNr=^ORD("IP",PRNr,ORDNr,OLUNr),R=$G(^KOD(KLNr,"F",ORDNr,OLNr)),OrdQty=$P(R,D,3) ..Set $P(Rec,D,7)=OrdQty,Count=Count+1,^HULP(%J,Count)=Rec,Rec="" .;opslag indien niet is opgeslagen door order .Set:$L(Rec,D)=4 Count=Count+1,^HULP(%J,Count)=Rec,Rec="" . For I=1:1:Count Do . Set Rec=^HULP(%J,I) . Set EWMSLoc=$P(Rec,D,3) . Set $P(Rec,D,16)=##class(EWMS.TransLoc).GetTransLocation(+$E(EWMSLoc,1,3),+$E(EWMSLoc,4,6),+$E(EWMSLoc,7,9),+$E(EWMSLoc,10,12)) . If $P(Rec,D,16)="" Do ; geen transloc . . Set $P(Rec,D,16)=$E(100+$E(EWMSLoc,4,6),2,3)_" "_$E(100+$E(EWMSLoc,7,9),2,3)_" "_$E(100+$E(EWMSLoc,10,12),2,3) . Set ^HULP(%J,I)=Rec Quit ; FETCHACT(PRNr,%J) New R,Rec,Result,Query,Status,Count Kill ^HULP(%J) Set Query="EWMS.Inventory:GetInvAndLocViaProd" Set Result=##class(%ResultSet).%New(Query) Set Status=Result.Execute(PRNr) If $$$ISERR(Status) Do WARN^vhTXTPOP("Query werkt niet, verwittig ICT ~"_$$ParseStatus^vhLib(Status)) Quit Set Count=0 For Quit:'Result.Next() Do . Set Rec=Result.Data("LocID") . Set $P(Rec,D,2)=+Result.Data("QtyPcs") . Set $P(Rec,D,3)=+Result.Data("QtyRes") . Set $P(Rec,D,4)=$G(Result.Data("LocM")) . Set $P(Rec,D,5)=$G(Result.Data("LocG")) . Set $P(Rec,D,6)=$G(Result.Data("LocX")) . Set $P(Rec,D,7)=$G(Result.Data("LocY")) . Set $P(Rec,D,8,9)=D,R=$G(Result.Data("InvTime")) . Do:$L(R) . . Set $P(Rec,D,8)=$$INTDATE^vhDTyp($P(R,"-",1,3)) . . Set $P(Rec,D,9)=$$INTTIME^vhDTyp($P($P(R,"-",4),".",1,3)) . Set $P(Rec,D,10,11)=D,R=$G(Result.Data("LocTime")) . Do:$L(R) . . Set $P(Rec,D,10)=$$INTDATE^vhDTyp($P(R,"-",1,3)) . . Set $P(Rec,D,11)=$$INTTIME^vhDTyp($P($P(R,"-",4),".",1,3)) . Set R=$G(Result.Data("LastCCTime")) . Do:$L(R) . . Set $P(Rec,D,12)=$$INTDATE^vhDTyp($P(R,"-",1,3)) . . Set $P(Rec,D,13)=$$INTTIME^vhDTyp($P($P(R,"-",4),".",1,3)) . Set $P(Rec,D,14)=$G(Result.Data("AutoCCFlag")) . Set $P(Rec,D,15)=$G(Result.Data("AantalBew")) . Set Count=Count+1,^HULP(%J,Count)=Rec Set Result="" ;De vertalling moet achteraf gebeuren omdat 2 geneste SQL queries niet werken over de SQL gateway For I=1:1:Count Do . Set Rec=^HULP(%J,I) . Set $P(Rec,D,16)=##class(EWMS.TransLoc).GetTransLocation(+$P(Rec,D,4),+$P(Rec,D,5),+$P(Rec,D,6),+$P(Rec,D,7)) . If $P(Rec,D,16)="" Do ; geen transloc . . Set $P(Rec,D,16)=$E(100+$P(Rec,D,5),2,3)_" "_$E(100+$P(Rec,D,6),2,3)_" "_$E(100+$P(Rec,D,7),2,3) . Set ^HULP(%J,I)=Rec Quit ; COPYOLD ; Copy van het oude EWPAL("D") ; Er worden 10 bestanden bijgehouden New Key,Cnt,Max Set Key="",Cnt=0 Set Max=-1 For Set Key=$O(^EWPAL("O",Key)) Quit:$E(Key)="" Do .Set Cnt=Cnt+1 Set Key="" For Set Key=$O(^EWPAL("O",Key)) Quit:Cnt<10 Do .Kill ^EWPAL("O",Key) .Set Cnt=Cnt-1 Set Key=+$P(^EWPAL("D"),D,1) ; Begin stockscan Set:'Key Key=+$P(^EWPAL("D"),D,2) ; Einde stockscan Set:'Key Key=$H-1 ; Default naar de vorige dag For Quit:'$D(^EWPAL("O",Key)) Set Key=Key+.001 ; Bij dubbel uniek maken Merge ^EWPAL("O",Key)=^EWPAL("D") ; Copy maken van EWPAL("D") Quit DIFFQTY(PRNr,PalSum,FysSt) Do ERROR^EWLOG($T(DIFFQTY2)) New Tekst,MailId,Lnk Set Tekst(1)="Stockcontrole voor product "_$P(^KPR(PRNr,0),D)_" ("_PRNr_")" Set Tekst(2)="~Som paletten : "_PalSum Set Tekst(3)="~Totaal fys. stock : "_FysSt Set Tekst(4)="~De som van de voorraad op de palletten is verschillend van de totale fysische stock" Set Tekst(5)="~Controle of een palet dubbel staat of dat een palet nietopgeven werd omdat de status of plaatst foutief is" Set Tekst=5 Set Lnk(1)="PR\"_PRNr_"\R" Set MailId=$$SYSTEM^vhMAIL("","WMS:Stock controle "_$G(From),$P(^KPR(PRNr,0),D),"EWPAL;1013",.Tekst,.Lnk,"U","A") Quit OPSLAGPL(PRNr,PalId,OpslagPl) Do ERROR^EWLOG($T(OPSLAGP2)) If PalId["9999999" Quit ;tijdelijk PV New Tekst,MailId,Lnk Set Tekst(1)="Stockcontrole voor product "_$P(^KPR(PRNr,0),D)_" ("_PRNr_")" Set Tekst(2)="~Palet : "_PalId Set Tekst(3)="~Opslagplaats : "_OpslagPl Set Tekst(4)="~De opslagplaats is niet geldig" Set Tekst(5)="~Controle of de palet dubbel staat of dat de palet wel in het goede magazijn staat" Set Tekst=5 Set Lnk(1)="PR\"_PRNr_"\R" Set MailId=$$SYSTEM^vhMAIL("","WMS:Stock controle "_$G(From),$P(^KPR(PRNr,0),D),"EWPAL;1013",.Tekst,.Lnk,"U","A") Quit GOODPALID(PRNr,PalId) Quit:PalId="00000000" 0 Quit ((PalId?3N1(1"K",1N)4N)||($D(^KPR(PRNr,"J6332"))&($L(PalId)=8)&(PalId?1(2.5"0"2.5A1N,1"0"1"T"6N,3.4N1A3.4N,1"SFS"5N,1"TBX"5N,1"00X"5N,1"TBP"5N)))) PALID(PRNr,PalId,OpslagPl) Quit:$$GOODPALID(PRNr,PalId) New Tekst,MailId,Lnk,Mag Do ERROR^EWLOG($T(PALID2)) Set Mag=+$E(OpslagPl,1,3) If Mag Set Mag=$P($G(^RES("PRODUCT","PI","OPSLAGZONE","D",Mag)),"`",3) Set:$L(Mag) $E(OpslagPl,1,3)="" Set Tekst(1)="Stockcontrole voor product "_$P(^KPR(PRNr,0),D)_" ("_PRNr_")" Set Tekst(2)="~Palet : "_PalId Set Tekst(3)="~Opslagplaatst : "_Mag_OpslagPl Set Tekst(4)="~De paletidentificatie is niet geldig" Set Tekst=4 Set Lnk(1)="PR\"_PRNr_"\R" Set MailId=$$SYSTEM^vhMAIL("","WMS:Stock controle "_$G(From),$P(^KPR(PRNr,0),D),"EWPAL;1013",.Tekst,.Lnk,"U","A") Quit MAXPALET ; Haalt vanuit de BlumProduktGegevens het maximum palet aantal op Set PRNr=0 Set (Cnt,MaxCnt)=0 Set FP=2301 For Set PRNr=$O(^KPR(PRNr)) Quit:PRNr="" Do .Quit:'$D(^KPR(PRNr,"J5005")) .Set Cnt=Cnt+1 .Write:Cnt#100=0 @F,MaxCnt," / ",Cnt .Set IDNr=$P(^KPR(PRNr,2),D,25) .Set BLUMID=$TR(IDNr,".","") .Set $E(BLUMID,1)=0 .Quit:'$D(^BLProd("D",BLUMID)) .Set QtyPalet=$P(^BLProd("D",BLUMID),D,18) .Set MaxPalet=$P(^KPR(PRNr,2),D,16) .;Write !,IDNr,"=",QtyPalet,"->",MaxPalet .Quit:MaxPalet'0" NEGSTOCK ;"Negatieve stock:"_PRNr_";"_$P($G(^KPR(PRNr,0)),D,1)_";"_$P($G(^KPR(PRNr,0)),D,14)_";"_AddQty DIFFQTY2 ;"Pallet qty <> doorgegeven fys. stock:"_PRNr_";"_$P(^KPR(PRNr,0),D,1)_";Sum:"_StockSum_"<->FysSt:"_$P(^KPR(PRNr,0),D,14)_"-Corr:"_$$CORR^EWPAL2(PRNr) NOPROD ;"Produktnummer "_PRNr_$S(PRNr:" "_$P($G(^KPRO(PRNr,0)),"\"),1:"")_" onbekend of ongeldig;"_$G(C("VOLGNR")) PALID2 ;"Foutieve paletId:"_C("VOLGNR")_";"_PRNr_";"_$P($G(^KPR(PRNr,0)),D,1)_";"_PalId_";"_OpslagPl OPSLAGP2 ;"Foutieve opslagplaats:"_C("VOLGNR")_";"_PRNr_";"_$P($G(^KPR(PRNr,0)),D,1)_";"_PalId_";"_OpslagPl