#include BL.Derde.LevSpecifiek #include vhLib.Macro ; w $$ShowViaBon^PVStatusOrder(316372) ShowViaBon(BONNr) Set KLNr=$P($G(^KU1(BONNr,"F")),"\") Quit:KLNr="" Set StraatGemeente=$$GeefCompactAdresVanBon(KLNr,BONNr) Quit $$Show(KLNr,StraatGemeente,,BONNr) Show(KLNr,StraatGemeente,VerzendDatum,MarkBONNr) Kill Cache,ProductieCache,OrdIndex,OrdCnt,List,Input Set VerzendDatum=$G(VerzendDatum,+$H) Set MarkBONNr=$G(MarkBONNr,"*") Do FetchOrders(KLNr,StraatGemeente,VerzendDatum) Do FetchReedsOpBon(KLNr,StraatGemeente,VerzendDatum) ;w ! zw Cache ;, ProductieCache ;w ! zw OrdIndex Do GroepBon ; het initieel opsplitsen van orders en prodgroepen zoveel mogelijk groeperen zodat de lijst klein blijft. Do GroepOrder ; Groeperen van deels nog te produceren en deel geproduceerde laden ;w ! zw Cache ;, ProductieCache Do FlattenCache(MarkBONNr) ;w ! zw List ;w !!!!!!!!!!!!!!!!! Set Input=1 Set:$O(List(""),-1)>1 Input=$$Popup(KLNr) Quit Input Popup(KLNr) New Titel,Input Set Titel=KLNr_" "_$P(^KKL(^KK1(KLNr),0),"\",2) Do INIT^vhLIST("ULTOER","KLANTVANDAAG",.LD) Set LD("SELECT")="" Do WRITE^vhLIST(.LD) Set Input=$$SCROLL^vhLIST(.LD) Quit Input FetchOrders(KLNr,StraatGemeente,VerzendDatum) New ORDNr,OLNr Set ORDNr="",ORDNr=$O(^KOD(KLNr,"F",ORDNr)) While ORDNr'="" { If $$GeldigOrder(KLNr,ORDNr,StraatGemeente) { W "add order" Set OLNr="",OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) While OLNr'="" { If $$GeldigOrderlijn(KLNr,ORDNr,OLNr,VerzendDatum) { Do AddOrderlijn(KLNr,ORDNr,OLNr) } Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) } } Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) } Quit FlattenCache(MarkBONNr) New CONSNr,LijnNr,ORDNR,TOENr,ProdGrp,LijnNr,Rec Set CONSNr="",CONSNr=$O(Cache(CONSNr)) Set LijnNr=0 While CONSNr'="" { Set ORDNr="",ORDNr=$O(Cache(CONSNr,ORDNr)) While ORDNr'="" { Set TOENr="",TOENr=$O(Cache(CONSNr,ORDNr,TOENr)) While TOENr'="" { Set ProdGrp="", ProdGrp=$O(Cache(CONSNr,ORDNr,TOENr,ProdGrp)) While ProdGrp'="" { Set lb=Cache(CONSNr,ORDNr,TOENr,ProdGrp) Set Rec="" Set $P(Rec,"\",1)=$LI(lb,1) ; Aantal lijnen Set:$LG(lb,2)>0 $P(Rec,"\",2)=$LG(lb,2) ; Aantal laden Set $P(Rec,"\",3)=CONSNr Set $P(Rec,"\",4)=ORDNr Set $P(Rec,"\",5)=TOENr Set $P(Rec,"\",6)=$LG(lb,9) ; Verzendwijze Set $P(Rec,"\",7)=$LG(lb,10) ; Product groepen Set $P(Rec,"\",8)=$$ListToPieces^vhLib($LG(lb,4),";") ; Status Set $P(Rec,"\",9)=$LG(lb,3) ;Productie tijdstip Set $P(Rec,"\",10)=$LG(lb,11) ;Dezelfde bon Set:CONSNr=MarkBONNr $P(Rec,"\",11)=1 ; Markeer Set List($I(LijnNr))=Rec Set ProdGrp=$O(Cache(CONSNr,ORDNr,TOENr,ProdGrp)) } Set TOENr=$O(Cache(CONSNr,ORDNr,TOENr)) } Set ORDNr=$O(Cache(CONSNr,ORDNr)) } Set CONSNr=$O(Cache(CONSNr)) } Quit GroepBon New CONSNr,LijnNr,ORDNR,TOENr,ProdGrp,NewProdGrp,NewORDNr,AantalBons,ProdGrpen Set CONSNr="",CONSNr=$O(Cache(CONSNr)) While CONSNr'="" { If CONSNr'="*" { Set ORDNr="",ORDNr=$O(Cache(CONSNr,ORDNr)) Set TOENr="*" If $D(Cache(CONSNr,ORDNr,TOENr)) ; Geen toeleveringen meer dus verdichten { Set NewProdGrp="*",NewORDNr="*" While ORDNr'="" { Set ProdGrp="", ProdGrp=$O(Cache(CONSNr,ORDNr,TOENr,ProdGrp)) While ProdGrp'="" { If ProdGrp'="*" { If '$D(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp)) { Set Cache(CONSNr,NewORDNr,TOENr,NewProdGrp)=Cache(CONSNr,ORDNr,TOENr,ProdGrp) Set $li(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp),1)=0 Set $li(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp),2)=0 } Set $li(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp),1)=$lg($g(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp)),1)+$li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),1) ; aantal lijnen Set:ProdGrp="LADE" $li(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp),2)=$lg($g(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp)),2)+$li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),2) ; aantal laden Set ProdGrpen=$lg($g(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp)),10) Set:ProdGrpen'[ProdGrp ProdGrpen=ProdGrpen_";"_ProdGrp Set $Li(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp),10)=ProdGrpen Set AantalBons=$$AantalBonsVanHetZelfdeOrder(ORDNr) Set:AantalBons>1 $Li(Cache(CONSNr,NewORDNr,TOENr,NewProdGrp),11)=ORDNr Kill Cache(CONSNr,ORDNr,TOENr,ProdGrp) } Set ProdGrp=$O(Cache(CONSNr,ORDNr,TOENr,ProdGrp)) } Set ORDNr=$O(Cache(CONSNr,ORDNr)) } }} Set CONSNr=$O(Cache(CONSNr)) } Quit GroepOrder New CONSNr,LijnNr,ORDNR,TOENr,ProdGrp Set CONSNr="",CONSNr=$O(Cache(CONSNr)) While CONSNr'="" { If CONSNr="*" { Set ORDNr="",ORDNr=$O(Cache(CONSNr,ORDNr)) While ORDNr'="" { Set TOENr="", TOENr=$O(Cache(CONSNr,ORDNr,TOENr)) While TOENr'="" { Set ProdGrp="LADE" If TOENr'="*",$D(Cache(CONSNr,ORDNr,TOENr,ProdGrp)) && $D(Cache(CONSNr,ORDNr,"*",ProdGrp)) ; Deel nog te produceren en deel reeds geproduceerd (zonder toelevering) { Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),1)=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),1)+$li(Cache(CONSNr,ORDNr,"*",ProdGrp),1) ; aantal lijnen Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),2)=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),2)+$li(Cache(CONSNr,ORDNr,"*",ProdGrp),2) ; aantal laden Set:$lg(Cache(CONSNr,ORDNr,TOENr,ProdGrp),4)=$lb("Nog te produceren") $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),4)=$lb("Deel nog te prod.") Kill Cache(CONSNr,ORDNr,"*",ProdGrp) } Set TOENr=$O(Cache(CONSNr,ORDNr,TOENr)) } Set ORDNr=$O(Cache(CONSNr,ORDNr)) } } Set CONSNr=$O(Cache(CONSNr)) } Quit AantalBonsVanHetZelfdeOrder(ORDNr) New ZelfdeBon,Cnt Set ZelfdeBon="",ZelfdeBon=$O(OrdIndex(ORDNr,ZelfdeBon)) Set Cnt=0 While ZelfdeBon'="" { Set Cnt=Cnt+1 Set ZelfdeBon=$O(OrdIndex(ORDNr,ZelfdeBon)) } Quit Cnt FetchReedsOpBon(KLNr,StraatGemeente,VerzendDatum) NEw CONSNr,BONNr,ORDNr,ULNr Set CONSNr="",CONSNr=$O(^ORDW("IK",KLNr,CONSNr)) While CONSNr'="" { Set BONNr=CONSNr Set ORDNr="" If $$GeldigPicking(KLNr,CONSNr,VerzendDatum) && $$GeldigBon(KLNr,BONNr,StraatGemeente) { ;w "add bon" Set ULNr=99,ULNr=$O(^KUL(KLNr,"F",BONNr,ULNr)) While ULNr?3.4N { If $$GeldigOrderOpBon(KLNr,BONNr,ULNr) { Set ORDNr=$P($P(^KUL(KLNr,"F",BONNr,ULNr),"\",5)," -") Set:ORDNr?6N OrdIndex(ORDNr,BONNr)="",OrdCnt(ORDNr)=$G(OrdCnt(ORDNr))+1 } ElseIf $$GeldigBonlijn(KLNr,BONNr,ULNr) { Do AddBonlijn(KLNr,BONNr,ULNr) } Set ULNr=$O(^KUL(KLNr,"F",BONNr,ULNr)) } } Set CONSNr=$O(^ORDW("IK",KLNr,CONSNr)) } Quit GeldigBon(KLNr,BONNr,StraatGemeente) Quit:'$D(^KUL(KLNr,"F",BONNr)) 0 Quit:$$GeefCompactAdresVanBon(KLNr,BONNr)'=StraatGemeente 0 Quit 1 GeldigPicking(KLNr,BONNr,VerzendDatum) Set DueOut=$P(^ORDW("D",CONSNr),"\",3) Quit:VerzendDatum'=+DueOut 0 Quit 1 GeldigBonlijn(KLNr,BONNr,ULNr) Set ULRec=^KUL(KLNr,"F",BONNr,ULNr) Quit:$P($P(ULRec,"\",17),"#")'="KF6" 0 ; geen productlijn Quit:$P(ULRec,"\",3)'>0 0 ; Aantal moet groter zijn dan nul Quit 1 GeldigOrderOpBon(KLNr,BONNr,ULNr) Set ULRec=^KUL(KLNr,"F",BONNr,ULNr) Quit:$P($P(ULRec,"\",17),"#")'="KF5" 0 ; orderverwijzing Quit 1 AddBonlijn(KLNr,BONNr,ULNr) New ULRec,Verzendwijze,Qty,PRNr,ProdGrp,Status,TOENr,TranspLink,TranspNr,TranspBONNr,TranspTijdstip,Transporteur Set ULRec=^KUL(KLNr,"F",BONNr,ULNr) Set Verzendwijze=$P($P(^KUL(KLNr,"F",BONNr,1),"\",7)," #") Set Qty=$P(ULRec,"\",3) Set PRNr=$P(ULRec,"\",2) Set ProdGrp=$$ProductGroep(PRNr) ;Set ORDNr="*" Set TOENr="*" Set Status="Geraapt "_$$VertaalTijdstip($P($G(^ORDW("D",BONNr)),"\",19)) If ProdGrp="OL" { Set Verpaktijdstip=$$GeefVerpakTijdstip(BONNr) If Verpaktijdstip { Set Status="Verpakt "_$$VertaalTijdstip(Verpaktijdstip) } } ; op Transport Set TranspLink=$P(^KUL(KLNr,"F",BONNr,1),"\",8) Set TranspNr=$P(TranspLink,";") Set TranspBONNr=$P(TranspLink,";",2) Set TranspTijdstip="",Transporteur="" Set:TranspNr&&TranspBONNr Status="Op transport",TranspTijdstip=$P(^TRANSP("D",TranspNr),"\",12),Transporteur=$P(^TRANSP("T",$P(^TRANSP("D",TranspNr),"\",1)),"\") Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),1)=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),1)+1 ; aantal lijnen Set:ProdGrp="LADE" $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),2)=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),2)+Qty ; aantal laden Set lbStatus=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),4) Set:'$lf(lbStatus,Status) lbStatus=lbStatus_$lb(Status) Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),4)=lbStatus Set $Li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),5)=TranspNr Set $Li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),6)=TranspBONNr Set $Li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),7)=TranspTijdstip Set $Li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),8)=Transporteur Set $Li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),9)=Verzendwijze Set $Li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),10)=ProdGrp Quit VertaalTijdstip(Tijdstip) If $P(Tijdstip,",",1)<$P($H,",",1) Quit "vorige wd" If $P(Tijdstip,",",1)=$P($H,",",1) Quit "vandaag "_$P($zt($P(Tijdstip,",",2)),":")_"h" Quit "" GeefVerpakTijdstip(BONNr) New result,SnijTijdstip Set result=##class(%ResultSet).%New("%DynamicQuery:SQL") Set SnijTijdstip="" Set sc=result.Prepare("select max(updatetijdstip) as SnijTijdstip from Prod.OptiBox_queue where objtype='L' and objref=? and type='S'") If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit "" Set sc=result.Execute(BONNr) If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit "" Set x=result.Next(.sc) If $$$ISERR(sc) Quit "" Set SnijTijdstip=result.Data("SnijTijdstip") If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit "" Quit $S(SnijTijdstip="":"",1:$zdth(SnijTijdstip,8)) GeldigOrder(KLNr,ORDNr,StraatGemeente) Quit:$$GeefCompactAdresVanOrder(KLNr,ORDNr)'=StraatGemeente 0 Quit 1 GeldigOrderlijn(KLNr,ORDNr,OLNr,VerzendDatum) New OLRec Set OLRec=^KOD(KLNr,"F",ORDNr,OLNr) Quit:$P($P(OLRec,"\",17),"#")'="KF0" 0 ; geen productlijn Quit:VerzendDatum<$$GetPickDatum^EWORDS6(ORDNr,OLNr) 0 ; verschillende verzenddatum Quit:$P(OLRec,"\",3)'>0 0 ; Aantal moet groter zijn dan nul Quit 1 AddOrderlijn(KLNr,ORDNr,OLNr) New OLRec,OLUNr,Qty,PRNr,Verzendwijze,ProdGrp,Status,lbStatus,CONSNr,WMSStatus,WMSErrorStatus,TOENr,TLNr Set OLRec=^KOD(KLNr,"F",ORDNr,OLNr) Set OLUNr=$P(OLRec,"\",15) Set Qty=$P(OLRec,"\",3) Set PRNr=$P(OLRec,"\",2) Set Verzendwijze=$P($P(^KOD(KLNr,"F",ORDNr,1),"\",7)," #") Set ProdGrp=$$ProductGroep(PRNr) Set Status="Nog in order" ;Picking Set CONSNr=$G(^ORDW("IO",ORDNr,OLUNr)) If CONSNr { Set WMSStatus=$P(^ORDW("D",CONSNr),"\",20) Set Status=$case(WMSStatus,"":"Niet doorgestuurd","W":"Wachten op picking","P":"Wachten op picking","C":"Geraapt maar nog niet op bon","A":"Geraapt maar nog niet op bon",:"Stataus onbekend: "_WMSStatus) Set WMSErrorStatus=$P(^ORDW("D",CONSNr),"\",21) Set:WMSErrorStatus'="" Status="In fout" Set Verzendwijze=$P($P(^ORDW("D",CONSNr),"\",2),"#") } Set:CONSNr="" CONSNr="*" ; Productie Set TOENr=$P(OLRec,"\",27) Set TLNr=$P(OLRec,"\",28) If (TLNr="KOM") && (Status="Nog in order") { Set Status="Geproduceerd" } Set ProductieTijdstip="" If TOENr && (Status="Nog in order") { Set:'$D(ProductieCache(TOENr)) ProductieCache(TOENr)=$$GetGeplandProductieEinde(TOENr,TLNr) Set Status="Nog te produceren" Set ProductieTijdstip=ProductieCache(TOENr) } Set:TOENr="" TOENr="*" Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),1)=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),1)+1 ; aantal lijnen Set:ProdGrp="LADE" $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),2)=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),2)+Qty ; aantal stuks Set lbStatus=$lg($g(Cache(CONSNr,ORDNr,TOENr,ProdGrp)),4) Set:'$lf(lbStatus,Status) lbStatus=lbStatus_$lb(Status) Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),4)=lbStatus Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),9)=$$CompactVerzendwijze(Verzendwijze) Set $Li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),10)=ProdGrp Set OrdIndex(ORDNr,CONSNr)="",OrdCnt(ORDNr)=$G(OrdCnt(ORDNr))+1 If ProductieTijdstip { Set OldTijdstip=$lg(Cache(CONSNr,ORDNr,TOENr,ProdGrp),3) If ( OldTijdstip="" ) || ( $P(OldTijdstip,",")<$P(ProductieTijdstip,",") ) || ( ($P(OldTijdstip,",")=$P(ProductieTijdstip,",")) && ($P(OldTijdstip,",",2)<$P(ProductieTijdstip,",",2)) ) { Set $li(Cache(CONSNr,ORDNr,TOENr,ProdGrp),3)= ProductieTijdstip } } Quit CompactVerzendwijze(Verzendwijze) Set Verzendwijze=$P($P(Verzendwijze,"`"),";") Quit Verzendwijze GetGeplandProductieEinde(TOENr,TLNr) New TLUNr,result,EindTijdstip Set TLUNr=$P(^KTO($$$LevHalux,TOENr,TLNr),"\",15) ;Write !,ORDNr," ",TOENr," " Set result=##class(%ResultSet).%New("%DynamicQuery:SQL") Set EindTijdstip="" Set sc=result.Prepare("Select max(EindTijdstip) as EindTijdstip from APPS_Halux_Planning_Pitching_dto.ResourcePitched where ToeleveringNr = ? and IsLeading>0") If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit "" Set sc=result.Execute(TOENr) If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit "" Set x=result.Next(.sc) If $$$ISERR(sc) Quit "" Set EindTijdstip=result.Data("EindTijdstip") If $$$ISERR(sc) Do DisplayError^%apiOBJ(sc) Quit "" Quit $S(EindTijdstip="":"",1:$zdth(EindTijdstip,8)) GeefCompactAdresVanBon(KLNr, BONNr) New StraatGemeente, Rec Set Rec=$G(^KUL(KLNr,"F",BONNr,3)) Set StraatGemeente=$P(Rec,"\",5)_";"_$P(Rec,"\",7) ;w !,"B:",BONNr," ",StraatGemeente Quit StraatGemeente GeefCompactAdresVanOrder(KLNr, ORDNr) New StraatGemeente, Rec Set Rec=$G(^KOD(KLNr,"F",ORDNr,3)) Set Straat=$P(Rec,"\",5) Set StraatGemeente=$P(Rec,"\",5)_";"_$P(Rec,"\",7) ;w !,"O:",ORDNr," ",StraatGemeente Quit StraatGemeente ProductGroep(PRNr) New ProdGrp Set ProdGrp=$$PRODGRP^PRODUKT(PRNr) Set:ProdGrp="LBX" ProdGrp="LADE" Set:ProdGrp="TBX" ProdGrp="LADE" Set:ProdGrp="MVX" ProdGrp="LADE" Set:ProdGrp="TA.B" ProdGrp="LADE" Set:ProdGrp="REST" ProdGrp="BSL" Set:ProdGrp="BLUM" ProdGrp="BSL" Quit ProdGrp