#include Prod.Product #include vhLib.Macro #include BL.Derde.LevSpecifiek Movement Set Dev=$$OPEN^vhDEV(,"EWMS HALUX TBX.txt","W","T") Use Dev Write $TR("Batch,TOENr,Type,Datum,CreatieTijdstip,MPRNr,Moeder,MQty,Grp,HFPRNr,Halffabr,Verpak,HFQty,",",",$C(9)),! Set Begin=$$INTDATE^vhLib.DataTypes("01/01/2011") Set End=$$INTDATE^vhLib.DataTypes("05/05/2011") Set (CONSNr,ORDNr,OLNr,SOLNr)="" Kill ProdCache Set BatchSet = ##class(%ResultSet).%New() Do BatchSet.Prepare("SELECT ID FROM APPS_Halux_common_impl.BatchImpl") Do BatchSet.Execute() While (BatchSet.Next()) { Set BatchID=BatchSet.Data("ID") Set Batch=##class(APPS.Halux.common.impl.BatchImpl).%OpenId(BatchID) Set QueueSet = ##class(%ResultSet).%New() Do QueueSet.Prepare("SELECT ID FROM PPS.TBX_Queue WHERE BatchID=?") Do QueueSet.Execute(BatchID) Kill Cache While (QueueSet.Next()) { Set Queue =##class(DS.PPS.TBX.Queue).%OpenId(QueueSet.Data("ID")) Set TOENr=Queue.TOENr Set DOSNr=Queue.DOSNr Set PRNr=Queue.ProductGetObjectId() Set Breedte=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"IB")) Set MatKl=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",PRNr,"MATKL")) ; Materiaal klant Write BatchID,*9,TOENr,*9,DOSNr,*9,PRNr,*9,Breedte,*9,MatKl,! Set CreatieTijdStip=Batch.GeefAanmaakTijdstip() Set Cache(TOENr,PRNr)=$G(Cache(TOENr,PRNr))+1 } ;Do Zijkanten(Batch,.Cache) ;Do LosseOnderdelen(Batch,.Cache) } Do CLOSE^vhDEV(Dev) Quit Zijkanten(Batch,Cache) Set TOENr=$O(Cache("")) While TOENr'="" { Set MPRNr=$O(Cache(TOENr,"")) While MPRNr'="" { Set MQty=Cache(TOENr,MPRNr) Set BSKey=$O(^PRBS("BS",MPRNr,"PRLA")) While $E(BSKey,1,4)="PRLA" { Set BSRec=^PRBS("BS",MPRNr,BSKey) If ($P(BSRec,"\",3)="H")&&($P(BSRec,"\",1)?4.8N) { Set KPRNr=$P(BSRec,"\",1) Do WriteZijkant(Batch,TOENr,MPRNr,MQty,KPRNr) } Set BSKey=$O(^PRBS("BS",MPRNr,BSKey)) } Set MPRNr=$O(Cache(TOENr,MPRNr)) } Set TOENr=$O(Cache(TOENr)) } Quit WriteZijkant(Batch,TOENr,MPRNr,MQty,KPRNr) Set Type=$$GetType(MPRNr) Write Batch.%Id(),*9,TOENr,*9,Type,*9,$P(Batch.GeefAanmaakTijdstip()," "),*9,Batch.GeefAanmaakTijdstip(),*9,MPRNr,*9,$$$ProductGet(MPRNr,$$$KortTekst),*9,MQty Write *9,"Z",*9,KPRNr,*9,$$$ProductGet(KPRNr,$$$KortTekst),*9,$$GrootVerpakking(KPRNr),*9,MQty*1 Write ! Quit LosseOnderdelen(Batch,Cache) Set TOENr=$O(Cache("")) While TOENr'="" { Kill LOCache Set MPRNr=$O(Cache(TOENr,"")) While MPRNr'="" { Set MQty=Cache(TOENr,MPRNr) Set Type=$$GetType(MPRNr) Set BSKey=$O(^PRBS("BS",MPRNr,"")) While $E(BSKey,1,4)'="" { Set BSRec=^PRBS("BS",MPRNr,BSKey) If ($P(BSRec,"\",3)="H")&&($P(BSRec,"\",19)="LOS")&&($P(BSRec,"\",1)?4.8N) { Set KPRNr=$P(BSRec,"\",1) Set KQty=$P(BSRec,"\",2) If Type="C" ; Groepeer { Set lbLO=$G(LOCache(KPRNr,"*")) Set $LI(lbLO,1)=$LG(lbLO,1)+(KQty*MQty) Set $LI(lbLO,3)=Type Set LOCache(KPRNr,"*")=lbLO } ElseIf Type="S" ; V1 { Set lbLO=$G(LOCache(KPRNr,MPRNr)) Set $LI(lbLO,1)=$LG(lbLO,1)+(KQty*MQty) Set $LI(lbLO,2)=MQty Set $LI(lbLO,3)=Type Set LOCache(KPRNr,MPRNr)=lbLO } } Set BSKey=$O(^PRBS("BS",MPRNr,BSKey)) } Set MPRNr=$O(Cache(TOENr,MPRNr)) } ; Set KPRNr=$O(LOCache("")) While KPRNr'="" { Set MPRNr=$O(LOCache(KPRNr,"")) While MPRNr'="" { Set lbLO=$G(LOCache(KPRNr,MPRNr)) Set KQty=$LG(lbLO,1) Set MQty=$LG(lbLO,2) Set Type=$LG(lbLO,3) Do WriteLosOnderdeel(Batch,TOENr,MPRNr,MQty,KPRNr,KQty,Type) Set MPRNr=$O(LOCache(KPRNr,MPRNr)) } Set KPRNr=$O(LOCache(KPRNr)) } Set TOENr=$O(Cache(TOENr)) } Quit WriteLosOnderdeel(Batch,TOENr,MPRNr,MQty,KPRNr,KQty,Type) Set Qty="" Set Verpak=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",MPRNr,"VERPAK")) Write Batch.%Id(),*9,TOENr,*9,Type,*9,$P(Batch.GeefAanmaakTijdstip()," "),*9,Batch.GeefAanmaakTijdstip(),*9,MPRNr,*9,$S(MPRNr:$$$ProductGet(MPRNr,$$$KortTekst),1:""),*9,MQty Write *9,"LO",*9,KPRNr,*9,$$$ProductGet(KPRNr,$$$KortTekst),*9,$$GrootVerpakking(KPRNr),*9,KQty Write ! Quit GetType(MPRNr) Set GenTyp=$$GENTYP^HAD(MPRNr) If $P(GenTyp,"\",2)["+" Quit "+" Set Verpak=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("TBX",MPRNr,"VERPAK")) Quit:Verpak="S" "S" Quit "C" GrootVerpakking(PRNr) If PRNr=457010 Quit 10 ;358M5002S Z R+L EP WA/G - ecopack met R + L op een pallet gestapeld Quit $$$PRGet($$$GrootVerpakking) WriteOne(PRNr,Qty,CONSNr,DueOut,KLNr) Set PalQty=$LG($G(^PVProd(PRNr)),3) Set Doos2Qty=$LG($G(^PVProd(PRNr)),4) Set DoosQty=$LG($G(^PVProd(PRNr)),5) Set Mag=$LG($G(^PVProd(PRNr)),1) Set Reden=$LG($G(^PVProd(PRNr)),2) Set RestQty=Qty Set (NbrPal,NbrDoos2,NbrDoos,NbrPcs)=0 If PalQty,RestQty'25 Do Define(PRNr,"P",9999999,"Gewicht") . Else Do Define(PRNr,"M",GVP,"Bak:Niet Blum") ; Niet Blum If LEVNr'=$$$LevBlum Do Quit . If TotGewicht>25 Do Define(PRNr,"P",9999999,"Gewicht") . Else If OpslagZone'=1 Do Define(PRNr,"U",9999999,"Opslagzone") . Else Do Define(PRNr,"M",GVP,"Bak:Niet blum") ; Blum If LEVNr=$$$LevBlum Do Quit . If (Ho>40)||(Le>75) Do . . Do Define(PRNr,"P",9999999,"TeGroot") . Else If TotGewicht>25 Do . . Do Define(PRNr,"P",9999999,"Gewicht") . Else If 'Br||'Le do . . Set BakQty=GVP . . Set:TotGewicht BakQty=50\(TotGewicht)*GVP . . Do Define(PRNr,"M",BakQty,"Bak:geen afmeting") . Else If (Br<25)||(Le<25) Do . . Set BakQty=(60*40)\(Br*Le)*GVP . . For Quit:BakQty*Gewicht/1000<50 Set BakQty=BakQty-GVP . . Set:BakQty<1 BakQty=1 . . Do Define(PRNr,"M",BakQty,"Bak:TeKlein") . Else Do . . Do Define(PRNr,"M",GVP,"Doos") Quit Define(PRNr,Mag,GVP,Reden) If Mag="M",Reden'["Bak" Do . Set PalQty=$$$PRGet($$$PalletQty) . Set Gewicht=$$$PRGet($$$Gewicht) . ; afmeting verpakking . Set BLID="0"_$E($TR($P(^KPR(PRNr,2),D,25),".",""),2,99) . Set BLRec=$G(^BLProd("D",BLID)) . Set Ho=$P(BLRec,D,25) . Set Le=$P(BLRec,D,23) . Set Br=$P(BLRec,D,24) . . If PalQty>100 Set PalQty=PalQty\2 . Set Doos2Qty=GVP*2 . If Doos2Qty*Gewicht/1000>50 Set Doos2Qty=0 . Set ^PVProd(PRNr)=$LB(Mag,Reden,PalQty,Doos2Qty,GVP) Else Do . Set ^PVProd(PRNr)=$LB(Mag,Reden,0,0,0) Quit