KPSBCNTR ;Stockbeheer controle [ 04/03/2003 11:41 AM ] Set %J=$$%J^vhRtn1() Write @F11,@F1,@FMTI," Stockbeheer - Controle NIET-STOCK - ",QN," ",@FMTi Write !!,"Verklaring status : " Write !,"1 = Er is fysische stock die niet is toegewezen aan een klant" Write !!,"2 = Er is een orderlijn waarvan de leveringsdatum verstreken is" Write !!,"3 = Er is een orderlijn waarvan de leveringsdatum verstreken is," Write !," maar in het order zijn andere orderlijnen die niet kunnen uitgeleverd worden" D FETCHNS($NAME(^HULP(%J)),1) D TRANS($NAME(^HULP(%J))) Quit FETCHNS(GlobRef,NotDeur,MetSub) ; Ophalen van de lijst van niet stock producten, waarvan er fysische stock is die moet verkocht worden. ;Status=""-> geen probleem ;Status=1 -> er is fysische stock die niet is toegewezen ;Status=2 -> er is een OL waarvan de LevDat verstreken is ;Status=3 -> er is een OL waarvan de LevDat verstreken is maar in het order zijn er ander OL's die niet kunnen uitgeleverd worden Kill @GlobRef Set NotDeur=$G(NotDeur) Set MetSub=$G(MetSub) Set ChkDatPR=$$CALCDATE^vhLib.DataTypes($H,"W","MD",-1) Set ChkDatOR=$$CALCDATE^vhLib.DataTypes($H,"W","MD",0) Set PRNr=0 Set (CntStat,Cnt)=0 Set FP=2301 Write @F,@F2,"Producten verwerkt: " Set FP=2321 For Set PRNr=$O(^KPR(PRNr)) Quit:PRNr="" Do .Write:Cnt#100=0 @F,CntStat,"/",Cnt .Set Cnt=Cnt+1 .Quit:$P(^KPR(PRNr,1),D,20)=1 ; Geen Stock .If NotDeur Do Quit:Key?2N1"DE"5N.E ; Geen deuren (folietec, burbidge) ..Set Key=$O(^KPR(PRNr,"I")) ..Set:$E(Key)="I" Key=$P(^KPR(PRNr,Key),D,2) .Quit:+$P(^KPR(PRNr,0),D,6)>+$H ; Controle uitverkoop nog niet verstreken .Quit:$E($P(^KPR(PRNr,2),D,25))="6" ; Geen kindproduct .Set FysSt=$P(^KPR(PRNr,0),D,14) .Quit:FysSt'>0 ; Geen voorraad .Set QtyTL=+$P(^KPR(PRNr,0),D,17) .Set QtyORD=+$P(^KPR(PRNr,2),D,9) .Set Status=QtyORD-QtyTL geen gevonden ; = 2 -> er zijn oude OL lijnen met dit product ; = 3 -> er zijn oude OL lijnen met dit product maar in dat order zijn andere OL lijnen die niet kunnen uitgeleverd worden. New Status,ORDNr,OLUNr,KLNr,Rec,Chk Set (Status,ORDNr,OLUNr,MemKL,MemOrd,MemTyp)="" For Set ORDNr=$O(^ORD("IP",PRNr,ORDNr)) Quit:ORDNr="" Do .For Set OLUNr=$O(^ORD("IP",PRNr,ORDNr,OLUNr)) Quit:OLUNr="" Do ..Set OLNr=^(OLUNr) ..Set KLNr=$P(^KO1(ORDNr,"F"),D) ..Set ORDTyp=$P(^KOD(KLNr,"F",ORDNr,1),D,25) ..Set Rec=^KOD(KLNr,"F",ORDNr,OLNr) ..Quit:$P(Rec,D,27)?6.7N ; Verbonden met KOM-toelevering ..Quit:$$INTDATE^vhLib.DataTypes($P(Rec,D,25),"DW")' geen problemen ; =1 -> minstens een OL kan niet uitgeleverd worden New OLNr,Rec,Chk,PRNr,ChkCnt,Cnt Set Chk="" Set OLNr=99 Set (Cnt,ChkCnt)=0 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do .Set Rec=^(OLNr) .Quit:$P(Rec,D,15)=NotOLUNr ; Deze lijn niet controleren .Set PRNr=$P(Rec,D,2) .Quit:PRNr'?4.7N ; Geen product .Set Cnt=Cnt+1 .Quit:$$INTDATE^vhLib.DataTypes($P(Rec,D,25),"DW")>ChkDat ; Orderdatum is nog niet verstreken .Quit:$P(Rec,D,27)?6.7N ; Er is nog een OL verbonden met KOM-toelevering .Quit:$P(^KPR(PRNr,0),D,14)<$P(Rec,D,10) ; Onvoldoende fysische stock .Set ChkCnt=ChkCnt+1 ; Voldoende stock Quit ChkCnt=Cnt&Cnt ; Alle lijnen kunnen uitgeleverd worden TRANS(GlobRef) New Dev,SortKEy,Key,Rec,PRNr,KortTxt,Stock,CiffPPL,KLNr,KLNm Quit:'$D(@GlobRef)>1 ; Niks te transfereren Set Dev=$$OPEN^vhDEV(,"STOCKCNTR.TXT","W") Quit:0[Dev Use Dev Write $TR("Klas;PRNr;Korttekst;Status;Stock;Kost;KLNr;Klantnaam;Order;OT",";",$C(9)),! Set SortKey="" For Set SortKey=$O(@GlobRef@(SortKey)) Quit:SortKey="" Do .Set Rec=@GlobRef@(SortKey) .Set PRNr=$P(Rec,D) .Set KortTxt=$P(^KPR(PRNr,0),D,1) .Set Stock=$P(^KPR(PRNr,0),D,14) .Set Key=$O(^KPR(PRNr,"J")) .Set CiffPPL=$S($E(Key)="J":$P(^KPR(PRNr,Key),D,23),1:0) .Set KLNr=$P(Rec,D,3) .Set KLNm=$S(KLNr:$P(^KKL(^KK1(KLNr),0),D,2),1:"") .Write SortKey,$C(9),PRNr,$C(9),KortTxt,$C(9),$P(Rec,D,2),$C(9),Stock,$C(9),$TR(Stock*CiffPPL,".",","),$C(9),KLNr,$C(9),KLNm,$C(9),$P(Rec,D,4),$C(9),$P(Rec,D,5),! Close:0'[Dev Dev Quit