#include BL.Derde.LevSpecifiek #include TECH.Error PRODUKT4 ;VOORRAAD [ 10/29/2003 11:06 AM ] ; DYNSTOCK(PRNr,Type,Week) New I,R,FysStock,PraStock,TeoStock,ResWMS,InOrder,InToel,WIndex,KLNr,ORDNr,OLNr,StockUpd,Aantal,OLUNr,InToelMin1,TeoM1Stock,TLWk,InReceptie,Gestockeerd,Stock Set Type=$G(Type),Week=$$INTDATE^vhLib.DataTypes($G(Week),"DW") ; omzetting resulteert in woensdag - midweek Quit:PRNr="?" $S(Type="F":"F-FysStock",Type="P":"P-PraStock (FysStock-Orders)",Type="T":"T-TeoStock (FysStock-Orders+Toelev)",Type="R":"R-RcpStock (In receptie)",Type="S":"S-StoStock (Gestockeerde recepties)",Type="":"F-FysStock\P-PraStock (FysStock-Orders)\T-TeoStock (FysStock-Orders+Toelev)\\R-RcpStock (In receptie)\S-StoStock (Gestockeerde recepties)",1:"?") Quit:PRNr="" "" Quit:'$D(^KPR(PRNr)) "" If $L(Type)>1 Do Quit Stock . Set Stock=0 . For I=1:1:$L(Type) Set Stock=Stock+$$DYNSTOCK(PRNr,$E(Type,I),.Week) Quit:"\\F\T\P\S\R\"'[(D_Type_D) "?" Quit:'$L(Week) $$GETSTOCK(PRNr,Type,Week) Set ResWMS=$P(^KPR(PRNr,0),D,9) Set FysStock=$P(^KPR(PRNr,0),D,14)-ResWMS If Type'="F",Type'="S",Type'="R" Do .Set (InOrder,InToel,InToelMin1)=0,WIndex="W" .For Set WIndex=$O(^KPR(PRNr,WIndex)) Quit:$E(WIndex)'="W" Do ..If $E(WIndex,9)="R" Do ...Set R=^KPR(PRNr,WIndex) ...Quit:$P(R,D,3) Quit:$$CALCDATE^vhLib.DataTypes($P(R,D,2),"W","MD")>Week ...Set Aantal=$P(R,D),ORDNr=$E(WIndex,18,23),OLNr=100+$TR($E(WIndex,24,26)," ",0) ...Do:('$D(^KO1(ORDNr,"F"))) ##class(vhLib.Logger).%New("StockNiveauService").Warning("Order niet gevonden voor product met wIndex : '" _WIndex _ "'") ...Set KLNr=$P(^KO1(ORDNr,"F"),D),R=$G(^KOD(KLNr,"F",ORDNr,OLNr)) ...Set OLUNr=$P(R,D,15) ...Do:(""=OLUNr) ##class(vhLib.Logger).%New("StockNiveauService").Warning("Order al op bon","KO1='"_^KO1(ORDNr,"F")_"'. " _ $$$CRLF _ ##class(TECH.Context).Instance().GeefSystemAPI().GeefStackTrace(1)) ...Quit:(""=OLUNr) ...Quit:$D(^ORDW("IO",ORDNr,OLUNr)) ; Reeds in WMS geen dubbeltelling ...Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" ...Set:StockUpd InOrder=InOrder+Aantal ..If $E(WIndex,9)="T" Do ...Set R=^KPR(PRNr,WIndex) ...Quit:$P(R,D,7) ...Set TLWk=$$INTDATE^vhLib.DataTypes($P(R,D,6),"DW") ...If TLWk'>Week Set InToel=InToel+$P(R,D,4) ...If TLWk1 Do Quit Stock . Set Stock=0 . For I=1:1:$L(Type) Set Stock=Stock+$$GETSTOCK(PRNr,$E(Type,I),.Week,.WVIncl,.WMSIncl) Quit:"\\F\T\P\S\R\"'[(D_Type_D) "?" Quit:$L(Week) $$DYNSTOCK(PRNr,Type,Week) Set ResWMS=$S($G(WMSIncl,1):$P(^KPR(PRNr,0),D,9),1:0) Set FysStock=$P(^KPR(PRNr,0),D,14)-ResWMS Do:$G(WVIncl) .Set R=$G(^PRSTOCK("D",PRNr)),WVStock=$P(R,D,5),WVRes=$P(R,D,6) .Set FysStock=FysStock-$$CV2MAG^MRP(PRNr,WVRes)+$$CV2MAG^MRP(PRNr,WVStock) If Type'="F",Type'="S",Type'="R" Do .Set (StToe,StOrd)=0,WInd="W" .For Set WInd=$O(^KPR(PRNr,WInd)) Quit:$E(WInd)'="W" Do ..Set R=^KPR(PRNr,WInd) ..If $E(WInd,9)="R" Quit:$P(R,D,3) Quit:'$$STOCKUPD(WInd) Set:$P(R,D)>0 StOrd=StOrd+$P(R,D) Set:$P(R,D)<0 StToe=StToe-$P(R,D) ..If $E(WInd,9)="T" Quit:$P(R,D,7) Set:$P(R,D,4)>0 StToe=StToe+$P(R,D,4) Set:$P(R,D,4)<0 StOrd=StOrd+$P(R,D,4) .Set PraStock=FysStock-StOrd+ResWMS .Set TeoStock=PraStock+StToe Set:"SR"[Type R=$$InReceptie(PRNr),InReceptie=$LI(R),Gestockeerd=$LI(R,2) ; Indien Type = "" $P(,D,4) is leeg om de output gelijk te houden met DYNSTOCK Quit $S(Type="F":FysStock,Type="P":PraStock,Type="T":TeoStock,Type="R":InReceptie,Type="S":Gestockeerd,1:FysStock_D_PraStock_D_TeoStock_D_D_InReceptie_D_Gestockeerd) ; ; Geef aantal in receptie en gestockeerd InReceptie(PRNr) New R,LEVNr,WInd,InReceptie,Gestockeerd,TOENr,TLNr,TLUNr,RCPNr Set LEVNr=$$LEVNR^PRODUKT2(PRNr) Set WInd="W",(InReceptie,Gestockeerd)=0 For Set WInd=$O(^KPR(PRNr,WInd)) Quit:$E(WInd)'="W" Do .Quit:$E(WInd,9)'="T" .Set TOENr=$E(WInd,18,23),TLNr=100+$TR($E(WInd,24,26)," ",0) .Set TLUNr=$P($G(^KTO(LEVNr,TOENr,TLNr)),"\",15) .Quit:'TLUNr .Set RCPNr=$G(^RCP("IT",TOENr,TLUNr)) .Quit:'RCPNr .Set R=$G(^RCP("D",RCPNr,"D",TOENr,TLUNr)) .Set InReceptie=InReceptie+$P(R,"\",4) .Set Gestockeerd=Gestockeerd+$P(R,"\",8) Quit $LB(InReceptie,Gestockeerd) ; VerkoopKinderen(PRNr,TotDatumOfWeek,IncludeFabKeyInReservatie) ; Berekenen van de weekverkoop van de halffabrikaten in reservatie ; TotDatumOfWeek kan 2 formaten hebben $H (alleen eerste piece) of het oude week formaat jj/ww New MRPNr,TOENr,TLUNr,TLNr,TLRec,LEVNr,KLNaam,Typ,Kom,StockUpd,WK,U2,FaktorH,FaktorK,Aantal,TotaalK,TotaalH,Dimensie,BSKey,FabrTyp,TotDatum Set TotDatum=$S($G(TotDatumOfWeek)="":"",TotDatumOfWeek?1.N:TotDatumOfWeek,1:$$INTDATE^vhLib.DataTypes($G(TotDatumOfWeek),"DW")) Set MPRNr="" Set U2="" Set (TotaalH,TotaalK)=0 For Set MPRNr=$O(^TO("IP",MPRNr)) Quit:MPRNr="" Do ;loop over moederproducten in toeleveringen . Quit:'$D(^PRBS("IP",PRNr,MPRNr)) ;Moederproduct bevat bouwsteen niet . Set (FaktorH,FaktorK)=0 . Set BSKey="" . For Set BSKey=$O(^PRBS("IP",PRNr,MPRNr,BSKey)) Quit:BSKey="" Do ;indien een product meerdere keren voorkomt in een moederproduct . . Set BSRec=^PRBS("BS",MPRNr,BSKey) . . Set FabrTyp=$P(BSRec,D,3) ; Kind of HalfFabrikaat . . Set Aantal=$P(BSRec,D,2) . . Set Dimensie=$P($G(^PRBS("BS",MPRNr,BSKey,"D")),D,3) . . Set:Dimensie Aantal=$$TELMAGST^MRP(PRNr,Aantal,0,Dimensie) . . Set:FabrTyp="H" FaktorH=FaktorH+Aantal . . Set:FabrTyp="K" FaktorK=FaktorK+Aantal . Set TOENr="" . For Set TOENr=$O(^TO("IP",MPRNr,TOENr)) Quit:TOENr="" Do . . Set LEVNr=$P(^KTO1(TOENr),"\",1) . . Quit:(LEVNr="")||(LEVNr=$$$LevVanHoecke) . . Set TLUNr="" . . For Set TLUNr=$O(^TO("IP",MPRNr,TOENr,TLUNr)) Quit:TLUNr="" Do . . . Set TLNr=^TO("IP",MPRNr,TOENr,TLUNr) . . . Set TLRec=^KTO(LEVNr,TOENr,TLNr) . . . Quit:'$$IsGeldigeWeek(LEVNr,TOENr,TLUNr,TLRec,TotDatum,.IncludeFabKeyInReservatie) . . . If FaktorH Do ; Als er geen KOM-link is, dus product is reeds gefabriceerd en de halffabr reeds in mindering gebracht . . . . Set Aantal=$P(TLRec,D,3)*(FaktorH) . . . . Set TotaalH=TotaalH+Aantal . . . If FaktorK Do . . . . Set Aantal=$P(TLRec,D,3)*(FaktorK) . . . . Set TotaalK=TotaalK+Aantal ; Totaal \ Halffabrikaat \ Kinderen Quit (TotaalH+TotaalK)_D_TotaalH_D_TotaalK IsGeldigeWeek(LEVNr,TOENr,TLUNr,TLRec,TotDatum,IncludeFabKeyInReservatie) New Geldig,ToeLevDatum,FabKey Set FabKey=$$FABKEYT^HADOPV(TOENr,TLUNr) If TotDatum { If LEVNr=$$$LevHalux { If $D(IncludeFabKeyInReservatie(FabKey)) ; wordt nu klaar gezet { Set Geldig=3 } ElseIf $P($G(^HADPR("F",FabKey,"K")),D,3)="A" ; Reeds Klaargezet { Set Geldig=4 } Else { Set ToeLevDatum=+$P(^KTO(LEVNr,TOENr,1),"\",19) ; via dueouttime Set:'ToeLevDatum ToeLevDatum=$$CALCDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes($P(TLRec,D,25),"DW"),"W","FD") ; via leverweek Set Geldig=ToeLevDatum'>TotDatum } } Else ; niet HALUX { Set ToeLevDatum=$$INTDATE^vhLib.DataTypes($P(TLRec,D,25),"DW") ; via leverweek Set Geldig=ToeLevDatum'>TotDatum ; LeverWeek ligt verder in de toekomst } } Else { Set Geldig=9 } Quit Geldig VerkoopKinderenORD(PRNr,TotDatumOfWeek) ; Berekenen van de weekverkoop van de halffabrikaten in reservatie ; TotDatumOfWeek kan 2 formaten hebben $H (alleen eerste piece) of het oude week formaat jj/ww New MRPNr,ORDNr,OLUNr,OLNr,OLRec,KLNr,KLNaam,Typ,Kom,StockUpd,LevDatum,U2,FaktorH,FaktorK,Aantal,TotaalK,TotaalH,Dimensie,BSKey,FabrTyp Set TotDatum=$S($G(TotDatumOfWeek)="":"",TotDatumOfWeek?1.N:TotDatumOfWeek,1:$$INTDATE^vhLib.DataTypes($G(TotDatumOfWeek),"DW")) Set MPRNr="" Set U2="" Set (TotaalH,TotaalK)=0 For Set MPRNr=$O(^PRBS("IP",PRNr,MPRNr)) Quit:MPRNr="" Do . Quit:'$D(^ORD("IP",MPRNr)) ; Moederproduct niet in order . Set (FaktorH,FaktorK)=0 . Set BSKey="" . For Set BSKey=$O(^PRBS("IP",PRNr,MPRNr,BSKey)) Quit:BSKey="" Do ;indien een product meerdere keren voorkomt in een moederproduct . . Set BSRec=^PRBS("BS",MPRNr,BSKey) . . Set FabrTyp=$P(BSRec,D,3) ; Kind of HalfFabrikaat . . Set Aantal=$P(BSRec,D,2) . . Set Dimensie=$P($G(^PRBS("BS",MPRNr,BSKey,"D")),D,3) . . Set:Dimensie Aantal=$$TELMAGST^MRP(PRNr,Aantal,0,Dimensie) . . Set:FabrTyp="H" FaktorH=FaktorH+Aantal . . Set:FabrTyp="K" FaktorK=FaktorK+Aantal . Set ORDNr="" . For Set ORDNr=$O(^ORD("IP",MPRNr,ORDNr)) Quit:ORDNr="" Do . . Set KLNr=$P($G(^KO1(ORDNr,"F")),D,1) . . Quit:KLNr="" . . Quit:$P(^KOD(KLNr,"F",ORDNr,1),"\",25)="C" ; geen contracten . . Set OLUNr="" . . For Set OLUNr=$O(^ORD("IP",MPRNr,ORDNr,OLUNr)) Quit:OLUNr="" Do . . . Set OLNr=^ORD("IP",MPRNr,ORDNr,OLUNr) . . . Set OLRec=^KOD(KLNr,"F",ORDNr,OLNr) . . . Quit:$P(OLRec,D,14)["S" ; zonder stock update . . . Quit:$P(OLRec,D,14)["Z" ; zonder stock update . . . Set IsKom=$P(OLRec,D,27)?6N ; Toelevering is nog ingevuld . . . Set LevDatum=$P(OLRec,D,25) . . . If TotDatum Quit:LevDatum>TotDatum ; LeverWeek ligt verder in de toekomst . . . ;Set:$D(^ORDW("IO",ORDNr,OLUNr)) WK="WMS " . . . If FaktorH&IsKom Do ; Als er geen KOM-link is, dus product is reeds gefabriceerd en de halffabr reeds in mindering gebracht . . . . Set Aantal=$P(OLRec,D,3)*(FaktorH) . . . . Set TotaalH=TotaalH+Aantal . . . If FaktorK Do . . . . Set Aantal=$P(OLRec,D,3)*(FaktorK) . . . . Set TotaalK=TotaalK+Aantal ; Totaal \ Halffabrikaat \ Kinderen Quit (TotaalH+TotaalK)_D_TotaalH_D_TotaalK ; ModTyp = 1 aankoop ; 2 verkoop ; 3 korrektie in ; 4 korrektie uit ; Indien aktie niet doorgegeven, dan bepaald via ModTyp MODSTOCK(MPRNr,Aantal,Absoluut,ModTyp,Date,Reden,AankPr,VerkPr,PrLink,BronPal,Delta,User,Aktie,Magazijn) New R,PR,FysStock,KPRNr,KindAant,TempAant,TempTyp,ModHist,IsEuro,WMS Set (MPRNr,PR)=$G(MPRNr),(Aantal,TempAant)=$G(Aantal,0),Absoluut=$G(Absoluut),(ModTyp,TempTyp)=$G(ModTyp,2) Set Date=$G(Date,$H),Reden=$G(Reden),AankPr=$G(AankPr),VerkPr=$G(VerkPr),PrLink=$G(PrLink) Set BronPal=$G(BronPal),Delta=$G(Delta),User=$G(User),Aktie=$G(Aktie) ; Opbouw sub record met palletinfo Set R="" If $L(BronPal) Do . Set $P(R,D)=BronPal . Set:$L(Delta) $P(R,D,2)=$S(ModTyp#2:Delta,1:-Delta) . Set $P(R,D,3)=Date . Set $P(R,D,4)=User . Set LocM=+$E($P(^EWPAL("D",MPRNr,BronPal),D,2),1,3) ; waar stond deze pallet deze morgen . Set $P(R,D,6)=$CASE(LocM,1:"A",2:"U",3:"L",4:"T",:"") . Set WMS(1)=R If MPRNr,$D(^KPR(MPRNr)) Do .Set IsEuro=$$ISEURO^vhRtn1() .If Absoluut Do ..Set FysStock=$$GETSTOCK(MPRNr,"F"),Aantal=Aantal-FysStock ..If TempAantFysStock,'(ModTyp#2) Set ModTyp=ModTyp-1 ..Set:Aantal<0 Aantal=-Aantal .Set:Date="" Date=+$H Set:Date?5N1","1.5N Date=+Date .Set:Date'?5N Date=$$INTDATE^vhLib.DataTypes(Date) Set Date=$$EXTDATE^vhLib.DataTypes(Date,"DS") .If AankPr'="",VerkPr'="" .Else Set R=$$PROD^KPRIJS(MPRNr,"","","") Set:AankPr="" AankPr=$P(R,D,13) Set:VerkPr="" VerkPr=$P(R,D,15) .Set R=^KPR(MPRNr,0),ModHist=$P(R,D,15) .Set R=$TR(Date,"\","")_ModTyp,$P(R,D,12)="",$P(R,D,2)=Aantal,$P(R,D,4)=1,$P(R,D,6)=0,$P(R,D,7)=ModHist,$P(R,D,8)=Reden .If ModTyp#2 Do ..Set $P(R,D,3)=$J(AankPr,0,$S(IsEuro:4,1:2)),$P(R,D,5)=$J(VerkPr,0,$S(IsEuro:4,1:2)) ..Do ^KPR20 ..Set:Aktie="" Aktie=$S(ModTyp=3:"M",1:"I") ; Aktie leeg, dan volgens modTyp ..Do PUT^PRHIST(MPRNr,Aantal,Aktie,.Magazijn,,,,$$INTDATE^vhLib.DataTypes(Date),,Reden,.WMS,User) .Else Do ..Set $P(R,D,5)=$J($J($S(ModTyp=4:AankPr,1:VerkPr),0,$S(IsEuro:4,1:2))*Aantal,0,$S(IsEuro:4,1:2)) Set:ModTyp=4 $P(R,D,11)=DT ..Do ^KPR10 ..Set:Aktie="" Aktie=$S(ModTyp=4:"M",1:"U") ; Aktie leeg, dan volgens modTyp ..Do PUT^PRHIST(MPRNr,-Aantal,Aktie,.Magazijn,,,,$$INTDATE^vhLib.DataTypes(Date),,Reden,.WMS,User) .If PrLink Do ..Set KPRNr="" ..For Set KPRNr=$O(^PRLINK("D",MPRNr,KPRNr)) Quit:KPRNr="" Do ...Set KindAant=$P(^PRLINK("D",MPRNr,KPRNr),D)*TempAant ...Do MODSTOCK(KPRNr,KindAant,Absoluut,TempTyp,Date,Reden) Quit ; DISPSTOC(PRNr,Type) New R,Stock,WVStock,StOvKind Set Type=$G(Type,"F"),Stock=$$GETSTOCK(PRNr,Type) Set R=^KPR(PRNr,0),StOvKind=$P(R,D,23)="S" Set R=$G(^PRSTOCK("D",PRNr)),WVStock=$P(R,D,5),WVStock=$$CV2MAG^MRP(PRNr,WVStock) Set:WVStock Stock=Stock_" ("_$$EXTNUM^vhLib.DataTypes(WVStock,0,"+",0)_")" Set:StOvKind Stock=$C(177)_Stock Quit Stock ; GETBEST(PRNr,Type) New Besteld,BestStck,BestKom,BestTot Set Type=$G(Type) Quit:"\\T\S\K\"'[(D_Type_D) "?" Set Besteld=$P(^KPR(PRNr,0),D,17) Set BestStck=$P(Besteld,"#",2),BestKom=$P(Besteld,"#",3),BestTot=$P(Besteld,"#") Quit $S(Type="T":BestTot,Type="S":BestStck,Type="K":BestKom,1:BestTot_D_BestStck_D_BestKom) ; MODBEST(PRNr,Type,Aantal,Absoluut) New Besteld Quit:"\S\K\"'[(D_Type_D) Set Besteld=$P(^KPR(PRNr,0),D,17) Set $P(Besteld,"#",$S(Type="S":2,1:3))=$S($G(Absoluut):Aantal,1:$P(Besteld,"#",$S(Type="S":2,1:3))+Aantal) Set $P(Besteld,"#")=$P(Besteld,"#",2)+$P(Besteld,"#",3),$P(^KPR(PRNr,0),D,17)=Besteld Quit ; GETRES(PRNr,Type) New Reserv,ResStck,ResKom,ResTot Set Type=$G(Type) Quit:"\\T\S\K\"'[(D_Type_D) "?" Set Reserv=$P(^KPR(PRNr,2),D,9) Set ResStck=$P(Reserv,"#",2),ResKom=$P(Reserv,"#",3),ResTot=$P(Reserv,"#") Quit $S(Type="T":ResTot,Type="S":ResStck,Type="K":ResKom,1:ResTot_D_ResStck_D_ResKom) ; MODRES(PRNr,Type,Aantal,Absoluut) New Reserv Quit:"\S\K\"'[(D_Type_D) Set Reserv=$P(^KPR(PRNr,2),D,9) Set $P(Reserv,"#",$S(Type="S":2,1:3))=$S($G(Absoluut):Aantal,1:$P(Reserv,"#",$S(Type="S":2,1:3))+Aantal) Set $P(Reserv,"#")=$P(Reserv,"#",2)+$P(Reserv,"#",3),$P(^KPR(PRNr,2),D,9)=Reserv Quit ; ADDRES(PRNr,Qty) ; WMS-reservatie update in het productenbestand Quit:$$OPSLMAN^PRODUKT2(PRNr) Quit:'$$MAGHANDEL^PRODUKT2(PRNr) Lock +^KPR(PRNr) ; WMS Reservatie update Set PRRec=^KPR(PRNr,0) Set $P(PRRec,D,9)=$P(PRRec,D,9)+Qty Set ^KPR(PRNr,0)=PRRec Lock -^KPR(PRNr) Quit ; CHKSTOCK(Modify,Mail) New (Modify,Mail) Set Modify=$G(Modify),Mail=$G(Mail) Do .New Modify,Mail .Do INIT^vhTERMINA If 'Modify Do .Set %J=$$%J^vhRtn1() .Kill ^HULP(%J) .Set KLNr=0 .For Set KLNr=$O(^KOD(KLNr)) Quit:'KLNr Do ..Set ORDNr=0 ..For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:'ORDNr Do ...Set OLNr=100 ...For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do ....Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) ....Quit:'PRNr ....Set Aantal=$P(R,D,3),LevTerm=$P(R,D,25),Kom=$P(R,D,27)'="" ....Set R=$$GWNODE^FLOWORD(KLNr,ORDNr,OLNr),R=$P(R,"`",3) ....Set:Aantal'=$P(R,D) ^HULP(%J,"O","Aantal",KLNr,ORDNr,OLNr)=Aantal_D_$P(R,D) ....Set:LevTerm'=$P(R,D,2) ^HULP(%J,"O","LevTerm",KLNr,ORDNr,OLNr)=LevTerm_D_$P(R,D,2) ....Set:Kom'=+$P(R,D,3) ^HULP(%J,"O","Kom",KLNr,ORDNr,OLNr)=Kom_D_+$P(R,D,3) .Set LEVNr=0 .For Set LEVNr=$O(^KTO(LEVNr)) Quit:'LEVNr Do ..Set TOENr=0 ..For Set TOENr=$O(^KTO(LEVNr,TOENr)) Quit:'TOENr Do ...Set R=^KTO(LEVNr,TOENr,1),Date=$P(R,D,2),ABNr=$P(R,D,3),LEVKLNr=$P(R,D,9),DOKlant=0,TLNr=100 ...If LEVKLNr,$D(^BLBeri("K",LEVKLNr)) Set DOKlant=$P(^BLBeri("K",LEVKLNr),D,6)="DO" ...For Set TLNr=$O(^KTO(LEVNr,TOENr,TLNr)) Quit:'TLNr Do ....Set R=^KTO(LEVNr,TOENr,TLNr),PRNr=$P(R,D,2) ....Quit:'PRNr ....Set Aantal=$P(R,D,3),LevTerm=$P(R,D,25),Kom=$P(R,D,27)'="" ....Set R=$$GWNODE^FLOWTOE(LEVNr,TOENr,TLNr),R=$P(R,"`",3) ....Set:Date'=$P(R,D) ^HULP(%J,"T","Date",LEVNr,TOENr,TLNr)=Date_D_$P(R,D) ....Set:LEVNr'=$P(R,D,2) ^HULP(%J,"T","LEVNr",LEVNr,TOENr,TLNr)=LEVNr_D_$P(R,D,2) ....Set:ABNr'=$P(R,D,3)&'DOKlant ^HULP(%J,"T","ABNr",LEVNr,TOENr,TLNr)=ABNr_D_$P(R,D,3) ....Set:Aantal'=$P(R,D,5) ^HULP(%J,"T","Aantal",LEVNr,TOENr,TLNr)=Aantal_D_$P(R,D,5) ....Set:LevTerm'=$P(R,D,6) ^HULP(%J,"T","LevTerm",LEVNr,TOENr,TLNr)=LevTerm_D_$P(R,D,6) ....Set:Kom'=+$P(R,D,7) ^HULP(%J,"T","Kom",LEVNr,TOENr,TLNr)=Kom_D_+$P(R,D,7) Set PRNr=0 For Set PRNr=$O(^KPR(PRNr)) Quit:'PRNr Do .Set Best=$P(^KPR(PRNr,0),D,17),BestStck=+$P(Best,"#",2),BestKom=+$P(Best,"#",3),Best=+Best .Set Res=$P(^KPR(PRNr,2),D,9),ResStck=+$P(Res,"#",2),ResKom=+$P(Res,"#",3),Res=+Res .If 'Modify Do ..Set:Best'=(BestStck+BestKom) ^HULP(%J,"P",PRNr,"Best")=Best_"#"_BestStck_"#"_BestKom ..Set:Res'=(ResStck+ResKom) ^HULP(%J,"P",PRNr,"Res")=Res_"#"_ResStck_"#"_ResKom .Set WNode="W",(CumBestS,CumBestK,CumResS,CumResK)=0 .For Set WNode=$O(^KPR(PRNr,WNode)) Quit:$E(WNode)'="W" Do ..Set R=^KPR(PRNr,WNode) ..If $E(WNode,9)="R" Do ...Set Aantal=$P(R,D),Kom=+$P(R,D,3) ...Set ORDNr=$E(WNode,18,23),OLNr=$TR($E(WNode,24,26)," ","")+100 ...If '$D(^KO1(ORDNr,"F")) Do Quit ....If Modify Kill ^KPR(PRNr,WNode) Quit ....Set ^HULP(%J,"P",PRNr,"O","Onbekend",ORDNr)="" ...Set KLNr=$P(^KO1(ORDNr,"F"),D),BONNr=$P(^KO1(ORDNr,"F"),D,2) ...If '$D(^KOD(KLNr,"F",ORDNr)),BONNr Do Quit ....If Modify Kill ^KPR(PRNr,WNode) Quit ....Set ^HULP(%J,"P",PRNr,"O","Uitgel",ORDNr)=BONNr ...If '$D(^KOD(KLNr,"F",ORDNr,OLNr)) Do Quit ....If Modify Kill ^KPR(PRNr,WNode) Quit ....Set ^HULP(%J,"P",PRNr,"O","Onbekend",ORDNr,OLNr)="" ...Set OrdTyp=$P(^KOD(KLNr,"F",ORDNr,1),D,25) ...Set R=^KOD(KLNr,"F",ORDNr,OLNr) ...Quit:$P(R,D,14)["S" Quit:$P(R,D,14)["Z" ...Set LevTerm=$P(R,D,25) ...If OrdTyp="A",$$INTDATE^vhLib.DataTypes(LevTerm,"DW")>$$LEVWK^PRODUKT4(PRNr,KLNr) Quit ...Set:'Kom CumResS=CumResS+Aantal Set:Kom CumResK=CumResK+Aantal ..If $E(WNode,9)="T" Do ...Set Aantal=$P(R,D,5),Kom=+$P(R,D,7) ...Set TOENr=$E(WNode,18,23),TLNr=$TR($E(WNode,24,26)," ","")+100 ...If '$D(^KTO1(TOENr)) Do Quit ....If Modify Kill ^KPR(PRNr,WNode) Quit ....Set ^HULP(%J,"P",PRNr,"T","Onbekend",TOENr)="" ...Set LEVNr=$P(^KTO1(TOENr),D) ...If '$D(^KTO(LEVNr,TOENr,TLNr)) Do Quit ....If Modify Kill ^KPR(PRNr,WNode) Quit ....Set ^HULP(%J,"P",PRNr,"T","Onbekend",TOENr,TLNr)="" ...Set:'Kom CumBestS=CumBestS+Aantal Set:Kom CumBestK=CumBestK+Aantal .If Modify Do ..If CumResS+CumResK'=(ResStck+ResKom) Do ...Set CumRes=(CumResS+CumResK)_"#"_CumResS_"#"_CumResK,$P(^KPR(PRNr,2),D,9)=CumRes ..If CumBestS+CumBestK'=(BestStck+BestKom) Do ...Set CumBest=(CumBestS+CumBestK)_"#"_CumBestS_"#"_CumBestK,$P(^KPR(PRNr,0),D,17)=CumBest .Else Do ..If CumResS'=ResStck Set ^HULP(%J,"P",PRNr,"CumResS")=CumResS_"#"_ResStck ..If CumResK'=ResKom Set ^HULP(%J,"P",PRNr,"CumResK")=CumResK_"#"_ResKom ..If CumBestS'=BestStck Set ^HULP(%J,"P",PRNr,"CumBestS")=CumBestS_"#"_BestStck ..If CumBestK'=BestKom Set ^HULP(%J,"P",PRNr,"CumBestK")=CumBestK_"#"_BestKom If Modify Do CHKSTOCK("",1) If 'Modify Do .If $D(^HULP(%J)) Do ..If 'Mail Do ^cG Quit ..Set ErrorNr=$P($P($ZR,"(",2),",") ..Set Onderw="Nazicht voorraad",TUserId="ERROR" ..Set Tekst="Er werden fouten gevonden bij het nazicht van de voorraad.~Gelieve na te zien." ..Set (Urgentie,AutoDel)=1 ..Set MailId=$$SYSTEM^vhMAIL("","",Onderw,TUserId,Tekst,"",Urgentie,AutoDel) .Kill ^HULP(%J) Quit ; ; ForceIsStock = 1 (steeds STOCK) ; = 0 of "" (steeds NIET-STOCK) LEVWK(PRNr,Klant,ExtForm,ForceIsStock) New J,R,LEVNr,LevWk,Weken,IsStock,IDNr Set Klant=$G(Klant),ExtForm=$G(ExtForm),J=$O(^KPR(PRNr,"J")) If $E(J)="J" Do .Set R=^KPR(PRNr,J),LEVNr=$P(R,D),Weken=$P(R,D,7) .Set R=^KPR(PRNr,1),IsStock=$P(R,D,20) .Set:$D(ForceIsStock) IsStock=ForceIsStock .Set R=^KPR(PRNr,2),IDNr=$P(R,D,25) .If LEVNr=5005,'IsStock,Weken=1,$H#7'=4,$E(IDNr)'=7 Set Weken=2 .If Klant Set Weken=$S(IsStock:0,1:Weken+1+$P(^KLE(^KL1(LEVNr),2),D,16)) .Set LevWk=$$CALCDATE^vhLib.DataTypes($H,"W",Weken,"MD") .Set:ExtForm LevWk=$$EXTDATE^vhLib.DataTypes(LevWk,"DW") Quit $G(LevWk) ; VERPAK(PRNr) New J,R,LEVNr,Verpak,MinBestH,PerStuk,IsStock,GrootVP,NormVp,KleinVP Set J=$O(^KPR(PRNr,"J")) If $E(J)="J" Do .Set R=^KPR(PRNr,J),LEVNr=$P(R,D),MinBestH=$P(R,D,6),PerStuk=$P(R,D,13) .Set GrootVp=$P(R,D,16),NormVp=$P(R,D,15),KleinVp=$P(R,D,14) .Set R=^KPR(PRNr,1),IsStock=$P(R,D,20) .Set Verpak=MinBestH Set:GrootVp>Verpak Verpak=GrootVp .Set:Verpak#GrootVp Verpak=GrootVp*2 .If IsStock Do ..Set:NormVp$G(Corr(4)) Do ..Set Corr=3_($P(Corr(3),D)-$P($G(Corr(4)),D))_"#"_($P(Corr(3),D,2)-$P($G(Corr(4)),D,2)) .Else Do ..Set Corr=4_($P(Corr(4),D)-$P($G(Corr(3)),D))_"#"_($P(Corr(4),D,2)-$P($G(Corr(3)),D,2)) .Set Corr=$E(DJ,3,4)_DM_DD_Corr_"#"_Text_"#\" .Set HistNr=$O(^KPR(PRNr,"H9999"),-1),HistRec=^KPR(PRNr,HistNr) .If $L(HistRec_R)<230 Set HistRec=HistRec_Corr .Else Set HistRec=Corr,^KPR(PRNr,"H")=^KPR(PRNr,"H")+1,HistNr="H"_$TR($J(^KPR(PRNr,"H"),4)," ",0) .Set ^KPR(PRNr,HistNr)=HistRec Quit ; STOCKUPD(Ref) New R,StockUpd,KLNr,ORDNr,OLNr Set StockUpd=0,ORDNr=$E(Ref,18,23),OLNr=$TR($E(Ref,24,26)," ","")+100 If ORDNr,OLNr Do .Set R=$G(^KO1(ORDNr,"F")),KLNr=$P(R,D) .Quit:'KLNr .Set R=$G(^KOD(KLNr,"F",ORDNr,OLNr)) .Quit:R="" .Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" Quit StockUpd ;