#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^vhLib.DataTypes($H,"M","FD",-12) Set MndBeginHJr=$$CALCDATE^vhLib.DataTypes($H,"M","FD",-6) Set MndEnd=$$CALCDATE^vhLib.DataTypes($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^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"M","FD",-12),"DM4")_" " Set MndEnd=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($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 TBXTijd Set KLNr=0 Set MndBegin=$$CALCDATE^vhLib.DataTypes($H,"BJ","FD",-1) Set MndEnd=$$CALCDATE^vhLib.DataTypes($H,"BJ","LD",-1) w $$EXTDATE^vhDTyp(MndBegin)," -> ",$$EXTDATE^vhDTyp(MndEnd),! Set Dev=$$OPEN^vhDEV(,"TBX Tijden.TXT","W","T") Use Dev Write "PRNr",*9,"KT",*9,Aantal,*9,"DC",*9,"Verpak",*9,"KostPL",*9,"Tijd(sec)",! Set MndBegin=$$CALCDATE^vhLib.DataTypes($H,"BJ","FD",-1) Set MndEnd=$$CALCDATE^vhLib.DataTypes($H,"BJ","LD",-1) Set PRNr=0 For Set PRNr=$O(^KPR(PRNr)) Quit:PRNr="" Do . Set GenType=$$GENTYP^HAD(PRNr) . Quit:$P(GenType,"\")'="TBX" . Set LC=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"LC")) . Quit:LC="" . Set Verpak=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"VERPAK")) . Do HISTO^STAT(PRNr,MndBegin,MndEnd,"I","M",.Cumul,.Aantal) . Quit:'Cumul . Set KT=$P(^KPR(PRNr,0),D,1) . Set BSKey="" . Kill KostPl1,KostPl2 . For Set BSKey=$O(^PRBS("BS",PRNr,BSKey)) Quit:BSKey="" Do . . Set BSRec=^PRBS("BS",PRNr,BSKey) . . Quit:$P(BSRec,"\",3)'="T" . . Set KostPl=$P(BSRec,"\",9) . . Quit:KostPl="" . . ;Quit:KostPl="HALUX KARTON" . . ;Set (KostPl="")||(";TBZAAG;TBMONT;TBVERPAK;"'[(";"_KostPl_";")) KostPl="DIV" . . Set KostPl1(KostPl)=$G(KostPl1(KostPl))+($P(BSRec,D,7)*$P(BSRec,D,2)*Cumul) . Set KostPl="" . For Set KostPl=$O(KostPl1(KostPl)) Quit:KostPl="" Do . . Write PRNr,*9,KT,*9,Aantal,*9,DC,*9,Verpak,*9,KostPl,*9,$$$ExcelNum(KostPl1(KostPl)),! Do CLOSE^vhDEV(Dev)