MRP ; Algemene routines [ 06/03/2003 7:51 AM ] #include Prod.Product IsDim(PRNr) Set MetaTag=$P($G(^KPR(PRNr,15)),D,10) Quit:"PR"[MetaTag 0 ; simpel Quit 1 ; CNTRDEF(PRNr) ; Default waarde voor product New Rec15 Quit:'$D(^KPR(PRNr,0)) Set Rec15=$G(^KPR(PRNr,15)) Set:$P(Rec15,D,9)="" $P(^KPR(PRNr,15),D,9)="ST" Set:$P(Rec15,D,10)="" $P(^KPR(PRNr,15),D,10)="PR" Quit CV2MAG(PRNr,QtyWV) ; Omvormen van werklvoereenheden naar magazijn stuks Quit QtyWV\1 ; CV2EENH(PRNr,QtyMag) ; Omvormen van magazijn stuks naar werkvloereenheden (dim. afhankelijk) Quit QtyMag CV2WV(PRNr,Stock,Qty,Dim,HFNetDim) ; Vermeerderen of verminderen van de werkvloer volgens de dimensie ;Optioneel Dim en HFNetDim Set:'$G(HFNetDim) HFNetDim=$P($G(^KPR(PRNr,15)),D,7) Quit Stock+(Qty*$S($G(Dim)&&$G(HFNetDim):Dim/HFNetDim,1:1)) TELHFST(PRNr,TotWV,DimBrut,DimNet) ;Berekend hoeveel keer een bepaald HF in het totaal gaat New MetaTag,Grote,OneQtyMag,TotQtyMag,RestEenh,RestQty Set MetaTag=$P($G(^KPR(PRNr,15)),D,10) If "PR"[MetaTag Quit TotWV ; simpel Set Grote=$P(^KPR(PRNr,15),D,7) Set OneQtyMag=Grote\DimBrut ; Bereken hoeveel HF uit een magazijn stuk Set TotQtyMag=$$CV2MAG(PRNr,TotWV) ; Omzetten naar Mag aantallen Set RestWV=TotWV-$$CV2EENH(PRNr,TotQtyMag) ; Bepaal de rest (onvolledig stuk) Set RestQty=RestWV*Grote\DimBrut ; Hoeveel stukken kunnen uit de rest Quit OneQtyMag*TotQtyMag+RestQty TELMAGST(PRNr,Qty,Round,DimBrut,DimNet) ;Bereken hoeveel magazijn stuks er nodig zijn. ;Indien Round=false dan wordt er het stuk bepaald dat nog nodig is verhouding tot het totaal ;Bv Er gaan er 4 uit een plaat en er zijn er nog 2 als rest dan is dit 0,5 ;Bv Er gaan er 3 uit een plaat en er zijn er nog 2 als rest dan is dit 0,6666 New MetaTag,Grote,OneQtyMag,TotQty,RestEenh,RestQty Set MetaTag=$P($G(^KPR(PRNr,15)),D,10) If "PR"[MetaTag Quit Qty ; simpel Set Grote=$P(^KPR(PRNr,15),D,7) Do:'DimBrut SendMiniMail^vhLib($zutil(110)_"@vanhoecke.be",$Lb("pv@vanhoecke.be"),"TELMAGST^MRP slecht geconfigureerd product"_PRNr,"Product "_PRNr_"is slecht geconfigureerd, BrutoDim is niet ingevuld voor een product met dimenisie") Set OneQtyMag=Grote\$S(DimBrut:DimBrut,1:1) ; Bereken hoeveel HF uit een magazijn stuk gaan Set QtyMag=Qty/$S(OneQtyMag:OneQtyMag,1:1) ; Bereken het benodigde aantal stuks, als OneQtyMag te klein is dan wordt 1 genomen. Set:$G(Round) QtyMag=$J(QtyMag+0.49999,0,0) ; Eventueel afronden naar boven Quit QtyMag QTYVPK(PRNr,VPKCode) ; Verpakcode omzetten naar aantal New Afrond Set Afrond=$$GETVPK(PRNr,$E(VPKCode,$L(VPKCode))) Quit VPKCode*Afrond RNDVPK(PRNr,Qty) ;Afronden volgens verpakking Quit:'Qty 0 New Afrond Set Afrond=$$GETVPK(PRNr,$P($G(^KPR(PRNr,15)),D,6),1) Quit Qty/Afrond+0.9999\1*Afrond GETVPK(PRNr,Code,NextBig) ; Ophalen van de verpak qty New Key,RecJ,Qty Quit:"S"[Code 1 Set Key=$O(^KPR(PRNr,"J")) Quit:$E(Key)'="J" 1 Set RecJ=^KPR(PRNr,Key) Set Qty=1 If Code="K" Set Qty=$P(RecJ,D,14) Set:Qty'>1&$G(NextBig) Code="N" If Code="N" Set Qty=$P(RecJ,D,15) Set:Qty'>1&$G(NextBig) Code="G" If Code="G" Set Qty=$P(RecJ,D,16) If Code="P" Do . Set Qty=$$$PRGet($$$PalletQty) . Quit:Qty>1 . New PALNr,PalQty,PalMax,PalCnt . Set (PALNr,PalQty,PalMax)="" . For Set PALNr=$O(^EWPAL("D",PRNr,PALNr)) Quit:PALNr="" Do .. Set PalQty=+$P(^EWPAL("D",PRNr,PALNr),D) .. Quit:PalQty="" .. Set PalCnt(PalQty)=$G(PalCnt(PalQty))+1 .. If PalCnt(PalQty)>PalMax Set Qty=PalQty,PalMax=PalCnt(PalQty) . If Qty'>1 Set Qty=$$GETVPK(PRNr,"G") Quit Qty