#include Prod.Product #include vhLib.Macro /* Haluxverkoopanalyse van TBX-onderdelen importeren in Exell-lijst met volgende data : korttekst aantal getransfereerd per jaar gewicht dimensies karton leverancier verpakking (vb. TBX per 6) min. bestelhoeveelheid bij leverancier pallethoeveelheid werkvloervoorraad (J of N) */ ; d TBXHalffabr^PVHalffabrikaten TBXHalffabr Set MndBegin=$$CALCDATE^vhDTyp($H,"M","FD",-12) Set MndBeginHJr=$$CALCDATE^vhDTyp($H,"M","FD",-6) Set MndEnd=$$CALCDATE^vhDTyp($H,"M","LD",-1) Set Dev=0 Set Dev=$$OPEN^vhDEV(,"TBX halfabr.txt","W","T") Use Dev Write $TR("PRNr;Korttekst;Zone;BasisType;LevNr;LevNm;Lengte;Breedte;Hoogte;CumulJr;AantalJr;FreqJr;Cumul6Mnd;Aantal6Mnd;Freq6Mnd;MinBH;Gewicht;PalletQty;GVp;NVP;IsWV",";",$C(9)),! Set PRNr="" For Set PRNr=$O(^KPR(PRNr)) Quit:PRNr="" Do . Set BasisType=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TB",PRNr,"BasisType")) . Quit:BasisType="" . Set IdentNr=$$$PRGet($$$IdentNummer) . Quit:$E(IdentNr)=6 ; kind . Quit:$E(IdentNr)=7 ; DO . Set KT=$P(^KPR(PRNr,0),D,1) . Set Zone=$Piece($G(^KPR(PRNr,15)),"\",12) . Set LevNr=$E($O(^KPR(PRNr,"J")),2,99) . Set LevNm=$P(^KLE(^KL1(LevNr),0),"\",2) . Set IsWV=$L($$$PRGet($$$WerkvloerHerbestelAantal))>0 . Set BLID=$S(LevNr=5005:$$GetBlumID^BLPROD(PRNr),1:"") . . Do HISTO(PRNr,MndBegin,MndEnd,.CumulJr,.AantalJr,.FreqJr) . Do HISTO(PRNr,MndBeginHJr,MndEnd,.CumulHJr,.AantalHJr,.FreqHJr) . Set ZoneOms=$S(Zone="":"",1:$P($G(^RES("PRODUKT","PI","HFWVSUBMAG","D",Zone)),"`",2)) . W PRNr,*9,KT,*9,ZoneOms,*9,BasisType,*9,LevNr,*9,LevNm . If BLID="" Do . . W *9,*9,*9 . Else Do . . Set BLRec=$G(^BLProd("D",BLID)) . . Write *9,$$$ExcelNum($P(BLRec,"\",23)),*9,$$$ExcelNum($P(BLRec,"\",24)),*9,$$$ExcelNum($P(BLRec,"\",25)) . W *9,$$$ExcelNum(-CumulJr),*9,$$$ExcelNum(AantalJr),*9,$$$ExcelNum(FreqJr) . W *9,$$$ExcelNum(-CumulHJr),*9,$$$ExcelNum(AantalHJr),*9,$$$ExcelNum(FreqHJr) . W *9,$$$PRGet($$$MinimumBestelHoeveelheid),*9,$$$ExcelNum($$$PRGet($$$Gewicht)),*9,$$$PRGet($$$PalletQty),*9,$$$PRGet($$$GrootVerpakking),*9,$$$PRGet($$$NormaleVerpakking),*9,IsWV . W ! Do CLOSE^vhDEV(Dev) q HISTO(PRNr,Begin,Einde,Cumul,Aantal,Freq) ;Begin,Einde : $H formaat ;Actie : Zie RES(PRHIST,PI,BEPERK) ;Magazijn : M = Magazijn, W = Werkvloer, K = Stock over kind, Z = Zonderstock ;Cumul, Aantal oproep via .Local (byRef) New Key,I,Rec,arDag Set Begin=$G(Begin) Set Einde=$G(Einde,999999) Set:$G(Magazijn)="" Magazijn="M" Set Key="" Set Cumul="",Aantal="",Freq="" For Set Key=$O(^PRHIST(PRNr,Key)) Quit:Key="" Do . Set Rec=^PRHIST(PRNr,Key) . Set Dat=+$P(Rec,"\") . Quit:DatEinde . Quit:$P(Rec,"\",5)'="W" . Quit:$P(Rec,"\",4)'="H" . If '$D(arDag(Dat)) Do . . Set arDag(Dat)="" . . Set Freq=Freq+1 . ;W Rec, "->",Cumul,! . Set Cumul=Cumul+$P(Rec,"\",2) . Set Aantal=Aantal+1 . Quit Queue Set Dev=0 Set Dev=$$OPEN^vhDEV(,"TBX kenmerken.txt","W","T") Use Dev &sql(DECLARE Queue CURSOR FOR Select ID,Klant,BatchID,TOENr,Product,WPPers_FirstChanged,LastChanged into :ID,:Klant, :BatchID,:TOENr,:MPRNr,:Created,:LastChanged from PPS.TBX_Queue order by BatchID,TOENr) &sql(OPEN Queue) Set MemTOENr="" Kill Cache For &sql(FETCH Queue) Quit:SQLCODE Do . ;w Klant,TOENr,MPRNr," ",LastChanged,! . Quit:Created="" . Set Created=$zdth(Created,8) . . Do HalfFabr(Klant,BatchID,TOENr,MPRNr,.Cache) . If MemTOENr'=TOENr Do . . Do WriteToe(Klant,BatchID,TOENr,Created,.Cache) . . Kill Cache . . Set MemTOENr=TOENr &sql(CLOSE Queue) Do WriteToe(Klant,BatchID,TOENr,Created,.Cache) Do CLOSE^vhDEV(Dev) Q WriteToe(Klant,BatchID,TOENr,Created,Cache) ;If $D(Cache("MON")) zw Cache r k Set Handeling="" For Set Handeling=$O(Cache(Handeling)) Quit:Handeling="" Do . Write Klant,*9,TOENr,*9,*9,$$$ExcelDat(Created),*9,Handeling,*9,$LG(Cache(Handeling),1),*9,$LG(Cache(Handeling),2),*9,$LG(Cache(Handeling),3),! Q HalfFabr(KLNr,BatchID,TOENr,MPRNr,Cache) Set BSKey="" For Set BSKey=$O(^PRBS("BS",MPRNr,BSKey)) Quit:BSKey="" Do . Set KPRNr=$P(^PRBS("BS",MPRNr,BSKey),"\") . Quit:'KPRNr . Set Grp=$P(^PRBS("BS",MPRNr,BSKey),"\",11) . Quit:Grp="HOUT" . Quit:Grp="SCR" . Quit:Grp="VPAK" . Set Handeling=$P(^PRBS("BS",MPRNr,BSKey),"\",19) . Set:Handeling="" Handeling="*" . Set lb=$G(Cache(Handeling)) . Set:'$D(Cache(Handeling,KPRNr)) $LI(lb,1)=$LG(lb,1)+1 . Set $LI(lb,2)=$LG(lb,2)+1 . Set $LI(lb,3)=$LG(lb,3)+$P(^PRBS("BS",MPRNr,BSKey),"\",2) . Set Cache(Handeling)=lb . Set Cache(Handeling,KPRNr)="" Q Set MndBegin=$$EXTDATE^vhDTyp($$CALCDATE^vhDTyp($H,"M","FD",-12),"DM4")_" " Set MndEnd=$$EXTDATE^vhDTyp($$CALCDATE^vhDTyp($H,"M","LD",-1),"DM4")_" " Set Dev=0 Set Dev=$$OPEN^vhDEV(,"TBX kenmerken.txt","W") Use Dev Write $TR("GenTyp;SubGT;PRNr;Product;Aantal;KLNr;KLNm;Regio;DC;DS;LC;LD;RH;BM;BS;KV;DK;KB;IB;FS;BGRP;SR;ASM;Verpak",";",$C(9)),! Set PRNr="" For Set PRNr=$O(^KPR(PRNr)) Quit:PRNr="" Do . Quit:'$D(^KPR(PRNr,"J6332")) . Set KT=$P(^KPR(PRNr,0),D,1) . Set GenTyp=$$GENTYP^HAD(PRNr) . Quit:$P(GenTyp,"\")'="TBX" . Quit:$P(GenTyp,"\",2)="HKS" . Set VolgNr="" . Set Qty=$$PROD^STAT(PRNr,0,MndBegin,MndEnd,1) . Quit:'Qty . Set KLNr=$O(^KSTPR(PRNr,0)) . Set KLNm=$S(KLNr:$P(^KKL(^KK1(KLNr),0),"\",2),1:"") . Set Regio=$S(KLNr:$P(^KKL(^KK1(KLNr),0),"\",20),1:"") . Set DK=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DK")) . Set SR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"SR")) . Set FS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"FS")) . Set SR=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"SR")) . Set BGRP=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BGRP")) . Set LC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LC")) . Set IB=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IB")) . Set KB=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KB")) . Set DC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DC")) . Set DS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"DS")) . Set LD=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD")) . Set RH=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"RH")) . Set BM=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BM")) . Set BS=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"BS")) . Set KV=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"KV")) . Set ASM=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"ASM")) . Set Verpak=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"VERPAK")) . Write $P(GenTyp,"\"),*9,$P(GenTyp,"\",2),*9,PRNr,*9,KT,*9,Qty,*9,KLNr,*9,KLNm,*9,Regio . Write *9,DC,*9,DS,*9,LC,*9,LD,*9,RH,*9,BM,*9,BS,KV,*9,*9,DK,*9,KB,*9,IB,*9,FS,*9,BGRP,*9,SR,*9,ASM,*9,Verpak . Write ! Close:Dev'=0 Dev Quit SELECT Set KLNr=0 Set Dev=$$OPEN^vhDEV(,"HALFABR.TXT","W") Use Dev Write "KLNr",*9,"BONNr",*9,"BSKey",*9,"Grp",*9,"KortT",*9,"Qty",*9,"LadeDiepte",*9,"HFKortT",*9,"HFQty",! For Set KLNr=$O(^KUL(KLNr)) Quit:KLNr="" Do . Set BONNr="" . For Set BONNr=$O(^KUL(KLNr,"G",BONNr)) Quit:BONNr="" Do . . Set LNr=100 . . For Set LNr=$O(^KUL(KLNr,"G",BONNr,LNr)) Quit:LNr="" Do . . . Set LRec=$G(^KUL(KLNr,"G",BONNr,LNr)) . . . Set PRNr=$P(LRec,D,2) . . . Set Qty=$P(LRec,D,3) . . . Quit:Qty<1 . . . Quit:PRNr'?4.7N . . . Set GenTyp=$$GENTYP^HAD(PRNr) . . . Quit:$P(GenTyp,"\",1,2)'="TBX\STD" . . . Set BSKey="" . . . For Set BSKey=$O(^PRBS("BS",PRNr,BSKey)) Quit:BSKey="" Do . . . .Set BSRec=^PRBS("BS",PRNr,BSKey) . . . .Quit:$P(BSRec,D,3)'="H" . . . .Set HFPRNr=$P(BSRec,D,1) . . . .Quit:HFPRNr'?4.7N . . . .Set Grp=$P(BSRec,D,11) . . . .Quit:BSKey["PRLA" . . . .Quit:"HOUT;VPAK;BM;SCR;RUG"[Grp . . . .Quit:Grp="FRONT"&&(BSKey'["PRFB") . . . .Set KortT=$P($G(^KPR(PRNr,0)),D) . . . .Set:KortT="" KortT=$P($G(^KPRO(PRNr,0)),D) . . . .Quit:KortT="" . . . .Set HFKortT=$P($G(^KPR(HFPRNr,0)),D) . . . .Set:HFKortT="" HFKortT=$P($G(^KPRO(HFPRNr,0)),D) . . . .Quit:HFKortT="" . . . .Set HFQty=$P(BSRec,D,2) . . . .Set LadeDiepte=##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LD") . . . .Write KLNr,*9,BONNr,*9,BSKey,*9,Grp,*9,KortT,*9,Qty,*9,LadeDiepte,*9,HFKortT,*9,HFQty,! Close:Dev'=0 Dev