#include BL.Derde.LevSpecifiek #include BL.Derde.KlantSpecifiek #include vhLib.Macro VerwerkOrders() New KLNr,ORDNr,OLNr Set LaatsteVerzendDatum=$$CALCDATE^vhLib.DataTypes($H,"A",1) w "LaatsteVerzendDatum ",LaatsteVerzendDatum," ",$$EXTDATE^vhLib.DataTypes(LaatsteVerzendDatum,"DK"),! Set Dev=$$OPEN^vhDEV(,"TeVerzenden.txt","W") Use Dev Write "KLNr ORDNr VZW LA ProdGrp ProductieDueout Diff(u) #Lade #LA Lijnen #LA InPick #LA InProd #LA InStock LA TOENr LA PickDueout #OL Lijnen #OL InPick #OL InProd #OL InStock OL TOENr OL PickDueout Oordeel",! Set KLNr=0,KLNr=$O(^KOD(KLNr)) While KLNr'="" { Set ORDNr="",ORDNr=$O(^KOD(KLNr,"F",ORDNr)) While ORDNr'="" { ;w KLNr, " ",ORDNr," - " Kill Cache,ProductieCache If $$GeldigOrder(KLNr,ORDNr) { Set OLNr="",OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) While OLNr'="" { If $$GeldigOrderlijn(KLNr,ORDNr,OLNr) { Do AddOrderlijn(KLNr,ORDNr,OLNr,LaatsteVerzendDatum) } Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) } } Do Validate(KLNr,ORDNr,.Cache) Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) } Set KLNr=$O(^KOD(KLNr)) } Do CLOSE^vhDEV(Dev) Quit Validate(KLNr,ORDNr,Cache) Set Cnt=0 Set ProdGrp="",ProdGrp=$O(Cache(ProdGrp)) While ProdGrp'="" { Set Cnt=Cnt+1 Set ProdGrp=$O(Cache(ProdGrp)) } Quit:Cnt'=2 Quit:'(($D(Cache("LADE"))&&$D(Cache("OL")))||($D(Cache("BSL"))&&$D(Cache("OL")))) Set VerschilInWerkuren=$$VerschilInWerkuren($H,$LG($G(Cache("LADE")),8)) Set Verzendwijze=$P(^KOD(KLNr,"F",ORDNr,1),"\",7) Write $P(^KKL(^KK1(KLNr),0),"\",2),*9,ORDNr,*9,Verzendwijze For ProdGrp="BSL","LADE","OL" Do . If $D(Cache(ProdGrp)) Do . . Write:ProdGrp?1(1"LADE",1"BSL") *9,ProdGrp,*9,$LG(Cache(ProdGrp),9),*9,VerschilInWerkuren,*9,$LG(Cache(ProdGrp),2) . . Write *9,$LG(Cache(ProdGrp),1),*9,$LG(Cache(ProdGrp),3),*9,$LG(Cache(ProdGrp),4),*9,$LG(Cache(ProdGrp),5),*9,$LG(Cache(ProdGrp),15),*9,$LG(Cache(ProdGrp),13) Write:($LG(Cache("OL"),1)=$LG(Cache("OL"),5))&&(VerschilInWerkuren'>6)&&(VerschilInWerkuren'="") *9,"DOORSTUREN" Write ! ;if $D(Cache) w KLNr," ",ORDNr,! zw Cache r k Quit VerschilInWerkuren(T1,T2) Quit:(T1="")||(T2="") "" New Diff,Neg,DiffUren,T1num,T2num Set T1num=$P(T1,",")*(24*60*60)+$P(T1,",",2) Set T2num=$P(T2,",")*(24*60*60)+$P(T2,",",2) Set Diff=T2num-T1num,Neg=Diff<0 ;zw T1num,T2num,Diff If $P(T2,",",1)>$P(T1,",",1) Do . Set Diff=Diff-(10*3600) ;10uur aftrekken Set DiffUren=Diff\3600 Set:Neg DiffUren=DiffUren*2 Quit DiffUren AddOrderlijn(KLNr,ORDNr,OLNr,LaatsteVerzendDatum) 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" Set DueOutTijdstip=$$GetPickDatum^EWORDS6(ORDNr,OLNr) Quit:$P(DueOutTijdstip,",")>LaatsteVerzendDatum Set (IsBezigMetPicking,TeProduceren,IsVoorradig)=0 ;Picking Set CONSNr=$G(^ORDW("IO",ORDNr,OLUNr)) If CONSNr { Set IsBezigMetPicking=1 } Set:CONSNr="" CONSNr="*" ; Productie Set TOENr=$P(OLRec,"\",27) Set TLNr=$P(OLRec,"\",28) Set ProductieTijdstip="" If TOENr { Set:'$D(ProductieCache(TOENr)) ProductieCache(TOENr)=$$GetGeplandProductieEinde(TOENr,TLNr) Set ProductieTijdstip=ProductieCache(TOENr) Set TeProduceren=1 } ; Heeft voorraad If 'TeProduceren,'IsBezigMetPicking { Set IsVoorradig=$$CheckStockOneProduct^EWORDS6(PRNr,Qty) } Set $li(Cache(ProdGrp),1)=$lg($g(Cache(ProdGrp)),1)+1 ; aantal lijnen Set:ProdGrp="LADE" $li(Cache(ProdGrp),2)=$lg($g(Cache(ProdGrp)),2)+Qty ; aantal stuks Set:ProdGrp="LADE" $li(Cache(ProdGrp),2)=$lg($g(Cache(ProdGrp)),2)+Qty ; aantal stuks Set:IsBezigMetPicking $li(Cache(ProdGrp),3)=$lg($g(Cache(ProdGrp)),3)+1 ; aantal lijnen bezig met picking Set:TeProduceren $li(Cache(ProdGrp),4)=$lg($g(Cache(ProdGrp)),4)+1 ; aantal lijnen nog te produceren Set:IsVoorradig $li(Cache(ProdGrp),5)=$lg($g(Cache(ProdGrp)),5)+1 ; aantal lijnen met voorraad Set:TOENr&&($lg(Cache(ProdGrp),15)'[TOENr) $li(Cache(ProdGrp),15)=$lg(Cache(ProdGrp),15)_$S($lg(Cache(ProdGrp),15)="":"",1:";")_TOENr ; Bepaal maximum productietijdstip (is eigenlijk overbodig door dat het tijdstip per toelevering wordt bepaald) If ProductieTijdstip { Set OldTijdstip=$lg(Cache(ProdGrp),8) If ( OldTijdstip="" ) || ( $P(OldTijdstip,",")<$P(ProductieTijdstip,",") ) || ( ($P(OldTijdstip,",")=$P(ProductieTijdstip,",")) && ($P(OldTijdstip,",",2)<$P(ProductieTijdstip,",",2)) ) { Set $li(Cache(ProdGrp),8)=ProductieTijdstip Set $li(Cache(ProdGrp),9)=$zdt(ProductieTijdstip,3,2) } } ; Maximum Set OldDueOutTijdstip=$lg(Cache(ProdGrp),10) If (OldDueOutTijdstip="" ) || ( $P(OldDueOutTijdstip,",")<$P(DueOutTijdstip,",") ) || ( ($P(OldDueOutTijdstip,",")=$P(DueOutTijdstip,",")) && ($P(OldDueOutTijdstip,",",2)<$P(DueOutTijdstip,",",2)) ) { Set $li(Cache(ProdGrp),10)=DueOutTijdstip Set $li(Cache(ProdGrp),11)=$zdt(DueOutTijdstip,3,2) } ;Minimum Set OldDueOutTijdstip=$lg(Cache(ProdGrp),12) If (OldDueOutTijdstip="" ) || ( $P(OldDueOutTijdstip,",")>$P(DueOutTijdstip,",") ) || ( ($P(OldDueOutTijdstip,",")=$P(DueOutTijdstip,",")) && ($P(OldDueOutTijdstip,",",2)>$P(DueOutTijdstip,",",2)) ) { Set $li(Cache(ProdGrp),12)=DueOutTijdstip Set $li(Cache(ProdGrp),13)=$zdt(DueOutTijdstip,3,2) } Quit CompactVerzendwijze(Verzendwijze) Set Verzendwijze=$P($P(Verzendwijze,"`"),";") Quit Verzendwijze GetGeplandProductieEinde(TOENr,TLNr) New TLUNr,result,EindTijdstip Set TLUNr=$P($G(^KTO($$$LevHalux,TOENr,TLNr)),"\",15) Quit:TLUNr="" "" 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=2") 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 "" ;Write !,ORDNr," ",TOENr," ",EindTijdstip Quit $S(EindTijdstip="":"",1:$zdth(EindTijdstip,8,3)) 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 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 1 GeldigOrderlijn(KLNr,ORDNr,OLNr) New OLRec Set OLRec=^KOD(KLNr,"F",ORDNr,OLNr) Quit:$P($P(OLRec,"\",17),"#")'="KF0" 0 ; geen productlijn Quit:$P(OLRec,"\",3)'>0 0 ; Aantal moet groter zijn dan nul Quit 1