PRSTOCK ; Produkten stockprogramma's [ 06/30/2003 10:41 AM ] ; ; StockTyp="F" - Fysische stock ; "W" - Werkvloerstock ; Aktie="S" - Stockaantal ; "C" - Correctie ; "O" - Overdracht ; "B" - Beginstock ; "D" - Correctie beschadigd ; "L" - Correctie beschadigd leverancier ; "R" - Recuperatie/Afbraak ; WIJZIG New %SC,%TC,Aktie,PRNr,Munt,EenhVerk,CiffPPL,LijstPr,OldStock,NewStock,OldToSt,NewToSt New BeginSt,CorrAant,Ref,PRNrOvd,OvdVan,OvdNaar,WvEenh,CorrLen,Uitval,BasisLen,AantalHF Set (Aktie,PRNr,Munt,EenhVerk,CiffPPL,LijstPr,OldStock,NewStock,OldToSt,NewToSt)="" Set (BeginSt,CorrAant,OvdAant,Ref,PRNrOvd,OvdVan,OvdNaar,StockTyp,WvEenh,CorrLen,Uitval,BasisLen,AantalHF)="" If '$G(CUserId) Set CUserId=$$DEVUSER^vhUSER() Do DISPLAY^vhScherm("PRSTOCK") Set StockTyp=$$PI^vhPOPUP("C;C","-OB1","Wijzigen","PRSTOCK","STOCK") Do:zb'="CANC" .Set Aktie=$$AKTIE(StockTyp) .If $L(Aktie) Do ..If StockTyp="W",Aktie="O" Do Quit:zb="CANC" ...Do FIELD^vhScherm("PRSTOCK","OVDWV") ...Set OvdNaar=$S(OvdVan="F":"W",1:"F") ...Do DISPLAY^vhScherm("PRSTOCK",,,,"OLDSTOCK;NEWSTOCK;OLDTOST;NEWTOST") ..Do DISPLAY^vhScherm("PRSTOCK",,,,"OVDWV;OVDWV2") ..For Do Quit:'%SC ...Set %SC=1 ...If Aktie="B" ...Else If Aktie="O" Set Ref="Overdracht" ...Else Do FIELD^vhScherm("PRSTOCK","REF") ...Quit:'%SC ...Do DISPLAY^vhScherm("PRSTOCK",,,,"REF") ...For Do Quit:'PRNr If StockTyp="W","\D\L\"[(D_Aktie_D) Quit ....Do FIELD^vhScherm("PRSTOCK","PRNR") ....If 'PRNr Set %SC=$S("\S\C\"[(D_Aktie_D):1,1:0) Quit ....Quit:'$$ModStockOk(PRNr,StockTyp) ....; hallfabr met toegelaten voorraad op de werkvloer of product met ALLEEN voorraad op de werkvloer ....If StockTyp="W",'$L($P($G(^KPR(PRNr,15)),D,5)),($P($G(^KPR(PRNr,2)),D,15)) Do WARN^vhTXTPOP("Product '"_$P(^KPR(PRNr,0),D)_"' heeft geen voorraad op de~werklvloer, gelieve in het automatisch magazijn te plaatsen.","") ....Do INITPROD,ADD^vhLock("^KPR(PRNr)") ....If '%TC Do Quit .....Set FP=2201 .....Write @F,@F1 .....Do LDISP^vhLock("^KPR(PRNr)","Produkt "_$P(^KPR(PRNr,0),D)) ....Do NEWSTOCK(StockTyp,Aktie) ....Do REMOVE^vhLock("^KPR(PRNr)") Quit ; ; Opvragen, berekenen nieuwe voorraad NEWSTOCK(StockTyp,Aktie) New %SC,%TC If Aktie="S" Do ; Stockaantal .For Do FIELD^vhScherm("PRSTOCK","NEWSTOCK") Quit:'%SC Do Quit:%SC ..Set:NewStock=OldStock %SC=0 ..If %SC,X'="(",X'=")" Do ...Set CorrAant=NewStock-OldStock ...Do DISPLAY^vhScherm("PRSTOCK",,,,"CORRECTIE;NEWSTOCK") ...Do FIELD^vhScherm("PRSTOCK","BEVESTIG") ...Do:%SC SAVE(StockTyp,Aktie,PRNr,CorrAant,Ref) ..If X="("!(X=")") Set PRNr=$$NEXT(X,PRNr) Set %SC=0 If Aktie="C" Do ; Correctie .For Do FIELD^vhScherm("PRSTOCK","CORRECTIE") Quit:'%SC Do Quit:%SC ..Set:'CorrAant %SC=0 ..If %SC,X'="(",X'=")" Do ...Set NewStock=OldStock+CorrAant ...Do DISPLAY^vhScherm("PRSTOCK",,,,"CORRECTIE;NEWSTOCK") ...Do FIELD^vhScherm("PRSTOCK","BEVESTIG") ...Do:%SC SAVE(StockTyp,Aktie,PRNr,CorrAant,Ref) ..If X="("!(X=")") Set PRNr=$$NEXT(X,PRNr) Set %SC=0 If Aktie="D"!(Aktie="L")!(Aktie="R") Do ; Correctie beschadigd .For Do If X'="(",X'=")" Quit ..If $$IsDim^MRP(PRNr) Do ; Halffabricaat ...For Do FIELD^vhScherm("PRSTOCK","CORRLEN") Quit:'%SC Do Quit:%SC ....Set:'CorrLen %SC=0 ....If %SC,X'="(",X'=")" Do .....Do DISPLAY^vhScherm("PRSTOCK",,,,"CORRLEN") .....For Do FIELD^vhScherm("PRSTOCK","UITVAL") Quit:X'="."&'%SC Do Quit:%SC ......If X="." Set %SC=1 Quit ......Do DISPLAY^vhScherm("PRSTOCK",,,,"UITVAL") ......For Do FIELD^vhScherm("PRSTOCK","AANTALHF") Quit:X'="."&'%SC Do Quit:%SC .......If X="." Set %SC=1 Quit .......If AantalHF>0,(Aktie'="R"),'$$^vhTXTPOP("PRSTOCK","CORRBESCHPOS") Set %SC=0 Quit .......Set CorrAant=$J(CorrLen*(1+(Uitval/100))/BasisLen*AantalHF,0,4) .......Set NewStock=OldStock+CorrAant .......Do DISPLAY^vhScherm("PRSTOCK",,,,"AANTALHF;CORRECTIE;NEWSTOCK") .......Do FIELD^vhScherm("PRSTOCK","BEVESTIG") .......If X="." Set %SC=1 Quit .......Do:%SC SAVE(StockTyp,Aktie,PRNr,CorrAant,Ref) ....If X="("!(X=")") Set PRNr=$$NEXT(X,PRNr) Set %SC='$$IsDim^MRP(PRNr) ..If '$$IsDim^MRP(PRNr) Do ; Geen halffabricaat ...For Do FIELD^vhScherm("PRSTOCK","CORRECTIE") Quit:'%SC Do Quit:%SC ....Set:'CorrAant %SC=0 ....If CorrAant>0,(Aktie'="R"),'$$^vhTXTPOP("PRSTOCK","CORRBESCHPOS") Set %SC=0 ....If %SC,X'="(",X'=")" Do .....Set NewStock=OldStock+CorrAant .....Do DISPLAY^vhScherm("PRSTOCK",,,,"CORRECTIE;NEWSTOCK") .....Do FIELD^vhScherm("PRSTOCK","BEVESTIG") .....Do:%SC SAVE(StockTyp,Aktie,PRNr,CorrAant,Ref) ....If X="("!(X=")") Set PRNr=$$NEXT(X,PRNr) Set %SC=$$IsDim^MRP(PRNr) If Aktie="O" Do ; Overdracht .For Do FIELD^vhScherm("PRSTOCK","OVERDRACHT") Quit:'%SC Do Quit:%SC ..Set:'OvdAant %SC=0 ..If %SC,X'="(",X'=")" Do ...Set NewStock=OldStock-OvdAant ...Do DISPLAY^vhScherm("PRSTOCK",,,,"OVERDRACHT;NEWSTOCK") ...If StockTyp="F" Do ....For Do FIELD^vhScherm("PRSTOCK","PRNROVD") Quit:PRNrOvd'=PRNr ....Set %SC=$S(PRNrOvd:1,1:0) ....Quit:'%SC ....Do DISPLAY^vhScherm("PRSTOCK",,,,"PRNROVD;PRNROVD2"),ADD^vhLock("^KPR(PRNrOvd)") ....If '%TC Do Quit .....Set FP=2201 .....Write @F,@F1 .....Do LDISP^vhLock("^KPR(PRNrOvd)","Produkt "_$P(^KPR(PRNr,0),D)) ....Do FIELD^vhScherm("PRSTOCK","BEVESTIG") ....Do:%SC SAVE(StockTyp,Aktie,PRNr,-OvdAant,,PRNrOvd) ....Do REMOVE^vhLock("^KPR(PRNrOvd)") ...Else Do ....Set NewToSt=OldToSt+OvdAant ....Do DISPLAY^vhScherm("PRSTOCK",,,,"NEWTOST") ....Do FIELD^vhScherm("PRSTOCK","BEVESTIG") ....Do:%SC SAVE(StockTyp,Aktie,PRNr,-OvdAant) ..If X="("!(X=")") Set PRNr=$$NEXT(X,PRNr) Set %SC=0 If Aktie="B" Do ; Beginstock .For Do FIELD^vhScherm("PRSTOCK","BEGINSTOCK") Quit:'%SC Do Quit:%SC ..If %SC,X'="(",X'=")" Do ...Do DISPLAY^vhScherm("PRSTOCK",,,,"BEGINSTOCK") ...Do FIELD^vhScherm("PRSTOCK","BEVESTIG") ...Do:%SC SAVE(StockTyp,Aktie,PRNr,BeginSt) ..If X="("!(X=")") Set PRNr=$$NEXT(X,PRNr) Set %SC=0 Quit ; SAVE(StockTyp,Aktie,PRNr,Aantal,Ref,PRNrOvd) New R,HistNode,LevNode,LijstPr,CiffPPL,HistNr,HistNr,BTNr,BTLUNr If '$G(CUserId) Set CUserId=$$DEVUSER^vhUSER() Set R=$$PROD^KPRIJS(PRNr,"","",""),CiffPPL=$P(R,D,13),LijstPr=$P(R,D,15) Set Aantal=+Aantal If Aktie'="O",StockTyp="W",'$G(^EWREC("INVENTARIS")) Do MAILWVST(PRNr,Aantal,Ref,CUserId) If Aktie="S" Do STORE(StockTyp,Aktie,PRNr,Aantal,Ref) If Aktie="C" Do STORE(StockTyp,Aktie,PRNr,Aantal,Ref) If Aktie="D"!(Aktie="L")!(Aktie="R") Do STORE(StockTyp,Aktie,PRNr,Aantal,Ref) If Aktie="O" Do .If StockTyp="F" Do ..Set Ref="Ovdr "_PRNrOvd ..Do STORE(StockTyp,Aktie,PRNr,Aantal,Ref) ..Set Ref="Ovdr "_PRNr ..Do STORE(StockTyp,Aktie,PRNrOvd,-Aantal,Ref) .Else Do ..Set Ref="Ovdr "_OvdVan_"->"_OvdNaar ..If StockTyp="W",'$G(^EWREC("INVENTARIS")) Do MAILWVST(PRNr,$S(OvdVan="W":Aantal,1:-Aantal),Ref,CUserId) ..Do STORE(OvdVan,Aktie,PRNr,Aantal,Ref) ..Do STORE(OvdNaar,Aktie,PRNr,-Aantal,Ref) If Aktie="B" Do .Set R=^KPR(PRNr,0),$P(R,D,12)=Aantal,$P(R,D,13)=DT,$P(R,D,14)=Aantal,^KPR(PRNr,0)=R .Set HistNode="H" .Kill ^KPR(PRNr,HistNode) .For Set HistNode=$O(^KPR(PRNr,HistNode)) Quit:$E(HistNode)'="H" Kill ^KPR(PRNr,HistNode) .Set LevNode="L" .For Set LevNode=$O(^KPR(PRNr,LevNode)) Quit:$E(LevNode)'="L" Kill ^KPR(PRNr,LevNode) .Set R=Aantal_D_+LijstPr_D_Aantal_D_+CiffPPL_D .Set LevNode="L"_$$EXTDATE^vhDTyp(,"DSN2"),^KPR(PRNr,LevNode)=R .Set R=$G(^PRSTOCK("D",PRNr)),$P(R,D)=Aantal,$P(R,D,5)=0 .If $TR(R,"\0","")="" Kill ^PRSTOCK("D",PRNr) .Else Set ^PRSTOCK("D",PRNr)=R .Set HistNr="" .For Set HistNr=$O(^PRHIST(PRNr,HistNr)) Quit:HistNr="" Do ..Set R=^PRHIST(PRNr,HistNr),BTNr=$P(R,D,7),BTLUNr=$P(R,D,8) ..If BTNr,BTLUNr Kill ^PRHISTI("B",BTNr,BTLUNr) .Kill ^PRHIST(PRNr) Quit ; ;StockType = F : Fysstock (Magazijn), W = Werkvloer ;Aktie = "O" Overdracht, D = Beschadigd Intern, L= Beschadiging Leverancier, B = Beginstock, default = Manuele aanpassing ;PRNr = Product ;Aantal = Nieuw stocknivo ;Ref = tekst STORE(StockTyp,Aktie,PRNr,Aantal,Ref) New R,RTemp,LijstPr,CiffPPL,OpslZone,PR If '$G(CUserId) Set CUserId=$$DEVUSER^vhUSER() Set PR=PRNr Set R=$$PROD^KPRIJS(PRNr,"","",""),CiffPPL=$P(R,D,13),LijstPr=$P(R,D,15) If StockTyp="F" Do ; Fysische stock .Set R=^KPR(PR,2),OpslZone=$P(R,D,15) .If Aantal>0 Do ..Set R=$$EXTDATE^vhDTyp(,"DSN")_3_D_Aantal_D_CiffPPL_D_1_D_LijstPr_D_D_D_Ref_D_D_D ..Do ^KPR20,PUT^PRHIST(PR,Aantal,$S(Aktie="O":"A",OpslZone>0&(OpslZone<5):"A",1:"M"),,,,,,,Ref,,CUserId) .Else Do ..Set R=$$EXTDATE^vhDTyp(,"DSN")_4_D_(-Aantal)_D_D_1_D_(CiffPPL*Aantal)_D_D_D_Ref_D_D_D_DT_D ..Do ^KPR10,PUT^PRHIST(PR,Aantal,$S(Aktie="O":"A",OpslZone>0&(OpslZone<5):"A",1:"M"),,,,,,,Ref,,CUserId) Else Do ; Werkvloerstock .If Aantal>0 Set R=$$EXTDATE^vhDTyp(,"DSN")_3_D_(Aantal)_D_D_1_D_(CiffPPL*Aantal)_D_D_D_Ref_D_D_D_DT_D .Else Set R=$$EXTDATE^vhDTyp(,"DSN")_4_D_(-Aantal)_D_D_1_D_(CiffPPL*Aantal)_D_D_D_Ref_D_D_D_DT_D .Set RTemp=R .Set:$P(RTemp,D,2) R=$$CV2EENH^MRP(PRNr,$P(RTemp,D,2)),$P(RTemp,D,5)=$P(RTemp,D,5)/$P(RTemp,D,2)*R,$P(RTemp,D,2)=R .Set R=RTemp .Do WV^KPR10,PUT^PRHIST(PR,Aantal,$S(Aktie="O":"A",Aktie="D":"B",Aktie="L":"L",Aktie="R":"C",1:"M"),"W",,,,,,Ref,,CUserId) Quit ; INIT New RemRubr,PutRubr,EditRubr,BoldRubr Set (RemRubr,PutRubr,EditRubr,BoldRubr)="" If Aktie="S" Do .Set RemRubr="OLDSTOCK;CORRECTIE;NEWSTOCK;REF" .Set PutRubr="BEGINSTOCK;OVERDRACHT;PRNROVD;PRNROVD2;OVDWV;OVDWV2;OLDTOST;NEWTOST" .Set EditRubr="NEWSTOCK;REF" .Set BoldRubr="CORRECTIE" If Aktie="C" Do .Set RemRubr="OLDSTOCK;CORRECTIE;NEWSTOCK;REF" .Set PutRubr="BEGINSTOCK;OVERDRACHT;PRNROVD;PRNROVD2;OVDWV;OVDWV2;OLDTOST;NEWTOST" .Set EditRubr="CORRECTIE;REF" .Set BoldRubr="NEWSTOCK" If Aktie="D"!(Aktie="L")!(Aktie="R") Do .Set RemRubr="OLDSTOCK;CORRECTIE;NEWSTOCK;REF" .Set PutRubr="BEGINSTOCK;OVERDRACHT;PRNROVD;PRNROVD2;OVDWV;OVDWV2;OLDTOST;NEWTOST" .Set EditRubr="CORRECTIE;REF" .Set BoldRubr="NEWSTOCK" .If PRNr,$$IsDim^MRP(PRNr) Do ..Set RemRubr=RemRubr_";BASISLEN;CORRLEN;UITVAL;AANTALHF" ..Set EditRubr="REF;CORRLEN;UITVAL;AANTALHF" .Else Set FP=1701 Write @F,@F1 If Aktie="O" Do .Set RemRubr="OLDSTOCK;OVERDRACHT;NEWSTOCK;REF" .Set RemRubr=RemRubr_$S(StockTyp="F":";PRNROVD;PRNROVD2",1:";OVDWV;OVDWV2;OLDTOST;NEWTOST") .Set PutRubr="BEGINSTOCK;CORRECTIE" .Set EditRubr="OVERDRACHT" .Set BoldRubr="NEWSTOCK;NEWTOST" If Aktie="B" Do .Set RemRubr="OLDSTOCK;BEGINSTOCK" .Set PutRubr="CORRECTIE;OVERDRACHT;NEWSTOCK;REF;PRNROVD;PRNROVD2;OVDWV;OVDWV2;OLDTOST;NEWTOST" For Quit:$P(RemRubr,";")="" Do REMATTR^vhScherm($P(RemRubr,";"),"DH","DH") Set RemRubr=$P(RemRubr,";",2,99) For Quit:$P(PutRubr,";")="" Do PUTATTR^vhScherm($P(PutRubr,";"),"DH","DH") Set PutRubr=$P(PutRubr,";",2,99) For Quit:$P(EditRubr,";")="" Do PUTATTR^vhScherm($P(EditRubr,";"),"U","") Set EditRubr=$P(EditRubr,";",2,99) For Quit:$P(BoldRubr,";")="" Do PUTATTR^vhScherm($P(BoldRubr,";"),"B","") Set BoldRubr=$P(BoldRubr,";",2,99) Quit ; INITPROD New R If StockTyp="W",Aktie="O" New StockTyp Set StockTyp=OvdVan Set (BeginSt,CorrAant,OvdAant,PRNrOvd,BasisLen,CorrLen,Uitval,AantalHF)="" If StockTyp="F" Set R=^KPR(PRNr,0),(OldStock,NewStock)=$P(R,D,14) Else Set R=$G(^PRSTOCK("D",PRNr)),(OldStock,NewStock)=$P(R,D,5) Do:Aktie="O" .If StockTyp="W" Set R=^KPR(PRNr,0),(OldToSt,NewToSt)=$P(R,D,14) .Else Set R=$G(^PRSTOCK("D",PRNr)),(OldToSt,NewToSt)=$P(R,D,5) Set:Aktie="D"!(Aktie="L")!(Aktie="R") BasisLen=$P($G(^KPR(PRNr,15)),D,7),Uitval=10,AantalHF=-1 Set R=$$PROD^KPRIJS(PRNr,"","",""),Munt=$P(R,D,2),EenhVerk=$P(R,D,11) Set CiffPPL=$J($P(R,D,13)*EenhVerk,0,2),LijstPr=$J($P(R,D,15)*EenhVerk,0,2) Set WvEenh="" Set:StockTyp="W" R=$G(^KPR(PRNr,15)),WvEenh=$P(R,D,9) Do DISPLAY^vhScherm("PRSTOCK",,,,,1) Quit ; AKTIE(StockTyp) New %SC,zb Set R=$$PI^vhPOPUP("C;C","-OB1",$$FETCHPOP^vhScherm("PRSTOCK","STOCK",StockTyp,"O"),"PRSTOCK","AKTIE") Do:zb'="CANC" .If R="B" Quit:'$$ASK^vhWACHTW("MANAGER","","",0) Do ..New R ..Set R=$$FETCHPOP^vhScherm("PRSTOCK","AKTIE","B","O") ..Set R=$$^vhTXTPOP("PRSTOCK","BEGINSTOCK","",R) .Set Aktie=R .Do DISPLAY^vhScherm("PRSTOCK",,,,,1) Quit Aktie ; CBAKTIE(Select) New Include Set Include=1 If StockTyp="F",$E(Select)="D" Set Include=0 ; Bij fysstock geen beschadiging intern If StockTyp="F",$E(Select)="L" Set Include=0 ; bij fysstock geen bescahdiging leverancier If StockTyp="F",$E(Select)="R" Set Include=0 ; bij fysstock geen recuperatie/afbraak If StockTyp="W",$E(Select)="B" Set Include=0 ; bij Werkvloer geen Beginstock ;If StockTyp="W",$E(Select)="C" Set Include=0 ; bij Werkvloer geen Correctie Quit Include ; NEXT(X,PRNr) New %TC Do REMOVE^vhLock("^KPR(PRNr)") If X=")" Set PRNr=$$NEXT^PRODUKT("K",PRNr) If X="(" Set PRNr=$$NEXT^PRODUKT("K",PRNr,-1) Do INITPROD,ADD^vhLock("^KPR(PRNr)") If '%TC Do Set PRNr=$$NEXT(X,PRNr) .Set FP=2201 .Write @F,@F1 .Do LDISP^vhLock("^KPR(PRNr)","Produkt "_$P(^KPR(PRNr,0),D)) Quit PRNr ; CHKAANT(Aantal,WvEenh) New sEr Set sEr="" If $L(WvEenh) Do .If WvEenh="ST",Aantal?.N Quit .If WvEenh'="ST" Quit:Aantal?.N Quit:Aantal?.N1"."1.4N .Set sEr="Foutieve numerieke ingave" Else Set:Aantal'?.N sEr="Foutieve numerieke ingave" Quit sEr ; ; Mail bij het wijzigen werkvloerstock MAILWVST(PRNr,AddQty,Reden,User) New Tekst,MailId,Lnk Set Reden=$G(Reden),User=$G(User) If '$L(User) Set User=$G(CUserId) If '$L(User) Set User=$$DEVUSER^vhUSER() Set Tekst(1)="Update werkvloerstock voor product "_$P(^KPR(PRNr,0),D)_" ("_PRNr_")" Set Tekst(2)="~Oude werkvloerstock : "_$P($G(^PRSTOCK("D",PRNr)),D,5) Set Tekst(3)="~Correctie aantal : "_AddQty Set Tekst(4)="~Nieuwe werkvloerstock : "_($P($G(^PRSTOCK("D",PRNr)),D,5)+AddQty) Set Tekst=4 Set:$L(Reden) Tekst=Tekst+1,Tekst(Tekst)="~Reden : "_Reden Set:$L(User) Tekst=Tekst+1,Tekst(Tekst)="~Gewijzigd door : "_$$USERNAME^vhUSER(User) Set Lnk(1)="PR\"_PRNr_"\R\1" Set MailId=$$SYSTEM^vhMAIL("","Stockcorr. W.V.",$P(^KPR(PRNr,0),D),19,.Tekst,.Lnk,"U","A") Quit ; ; Productselectie SELPROD() New PRNr,Tekst For Set PRNr=$$SELECT^PRODUKT6() Quit:'PRNr Quit:'$D(^HISTPAK("P",PRNr)) Do . Set Tekst="Ecopack verpakkingen niet toegestaan!" . Do WARN^vhTXTPOP(Tekst,"") Quit PRNr ; ModStockOk(PRNr,StockTyp) New R,ModStockOk,WvStock Set ModStockOk=1 Do:StockTyp="W" . Set R=$G(^PRSTOCK("D",PRNr)),WvStock=$P(R,D,5) . If WvStock="" Set ModStockOk=$$^vhTXTPOP("PRSTOCK","NOWVPROD","",$P(^KPR(PRNr,0),D)) Quit ModStockOk ;