FLOWHALUX ;Halux [ 11/04/2003 1:20 PM ] #include BL.Derde.LevSpecifiek #include vhLib.Macro #include Prod.Product ;opm : blVerzendWije en blLeveringsTermijn moeten geinitieerd zijn ;Voor alle HALUX toeleveringen waarmee het order gekoppeld wordt SetDueOutProductieORD(ORDNr,Forced) New CacheTOENr,OLNr,R,KLNr,PRNr,TOENr Set KLNr=$P(^KO1(ORDNr,"F"),D) Set CacheTOENr="" Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),TOENr=$P(R,D,27) . Quit:'TOENr . Quit:$LF(CacheTOENr,TOENr) . Set CacheTOENr=CacheTOENr_$LB(TOENr) . Do SetDueOutProductieTOELEV(TOENr,.Forced) . Set ToeleveringsService = ##class(DOM.AKP.impl.ToeleveringService).%New() . If (ToeleveringsService.HeeftToeleveringMinstensEenSpaceStep(TOENr)) Do . . Do ##class(BL.Legacy.FLOWHALUX).VerstuurSpaceStepInToeleveringMail(TOENr) Quit ;opm : blVerzendWije en blLeveringsTermijn moeten geinitieerd zijn ;Invullen van de vroegste DueOutTime van een toelevering SetDueOutProductieTOELEV(TOENr,Forced) New LevNr,VroegsteDueOut Set LevNr=$P(^KTO1(TOENr),D) Quit:LevNr'=$$$LevHalux Quit:'$G(Forced)&&($P(^KTO(LevNr,TOENr,1),D,19)) ; reeds ingevuld Set VroegsteDueOut=$$GetDueOutProductieTOELEV(LevNr,TOENr) Do PutDueOutProductieTOELEV(LevNr,TOENr,VroegsteDueOut) Quit ; Invullen van het fabricatietijdstip in de toelevering PutDueOutProductieTOELEV(LEVNr,TOENr,DueOutProductie) New TLNr,OldDueOutProductie,WijzigingType Set OldDueOutProductie=$P(^KTO(LEVNr,TOENr,1),D,19) Set $P(^KTO(LEVNr,TOENr,1),D,19)=DueOutProductie Do:DueOutProductie'=OldDueOutProductie ; Indien niet gelijk, dan event voor alle lijnen . Set WijzigingType=##class(DOM.AKP.enu.ProductToeleveringLijnWijzigingType).Leverdatum() . Set TLNr=100 . For Set TLNr=$O(^KTO(LEVNr,TOENr,TLNr)) Quit:'TLNr Do . . Do:$P(^KTO(LEVNr,TOENr,TLNr),D,2) ProductToeleveringLijnGewijzigd^FLOWTOE2(LEVNr,TOENr,TLNr,WijzigingType) Quit ;opm : blVerzendWije en blLeveringsTermijn moeten geinitieerd zijn ;berekend de vroegste DueOutTime van een toelevering GetDueOutProductieTOELEV(LevNr,TOENr) New VroegsteDueOut,TLNr,ToeRec,PRNr,ToeLevWk,ORDNr,OLNr,LeverDatum,KLNr,DueOut New DateComparator,CurrentDate Set DateComparator = ##class(TECH.Comparator.DateComparator).%New() Set CurrentDate = ##class(TECH.Context).Instance().GeefDateTimeAPI().CurrentDate() Quit:LevNr'=$$$LevHalux "" Set VroegsteDueOut="" Set TLNr=100 For Set TLNr=$O(^KTO(LevNr,TOENr,TLNr)) Quit:TLNr="" Do . Set ToeRec=^KTO(LevNr,TOENr,TLNr) . Set PRNr=$P(ToeRec,D,2) . Quit:'PRNr . Set ToeLevWk=$P(ToeRec,D,25),ORDNr=$P(ToeRec,D,27),OLNr=$P(ToeRec,D,28) . Set LeverDatum="" . If ORDNr,OLNr Do . . Set KLNr=$P(^KO1(ORDNr,"F"),D) . . Set LeverDatum=$P($G(^KOD(KLNr,"F",ORDNr,OLNr)),D,25) . If 'LeverDatum Do . . Set LeverDatum=$$DefaultFromWeek(PRNr,ToeLevWk) . ; omzetting van leverdag naar productie DueOut . Set DueOut=blLeveringsTermijn.GetLaatsteProductieTijdstip(LeverDatum, PRNr, ORDNr) . If DateComparator.IsKleinerDan(+DueOut,CurrentDate) Do . . Set $Piece(DueOut,",",1) = CurrentDate . ; vroegste . Set:(VroegsteDueOut="")||($$DIFFTIME^vhLib.DataTypes(DueOut,VroegsteDueOut)>0) VroegsteDueOut=DueOut Quit VroegsteDueOut DefaultFromWeek(PRNr,ToeLevWk) Quit $$CALCDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(ToeLevWk,"DW"),"W","FD") ; eerste dag van de week: maandag ; Verwerken van de productiegegevens vanuit het order (inclusief sluiten) ProductieOrder(ORDNr,Closing,ViaToelevering,ProductieGroep) New %SC,sFL,R,X,OrdRec,KLNr,LeverWeken,LeverDatum,VerzendWijze,ProductieTijdstip,OLNr,TOENr,ScreenTitel New arrTOE Set ProductieGroep=$G(ProductieGroep,$$ProductieGroep(ORDNr)),ScreenTitel=$S(ProductieGroep="TBX":"Tandembox",1:"Halux") Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) For Do ADD^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit:%TC D LDISP^vhLock("^KOD(KLNr,""F"",ORDNr)","Order "_ORDNr) Set OrdRec=^KOD(KLNr,"F",ORDNr,1),VerzendWijze=$P(OrdRec,D,7),LeverDatum=$P(OrdRec,D,16) Set:$G(VerzendWijze)="" VerzendWijze=$$DEFAULT^KLVERZW(,KLNr) Set:$L(LeverDatum) LeverDatum=$$INTDATE^vhLib.DataTypes(LeverDatum) Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),TOENr=$P(R,D,27) . Set:$length(TOENr) arrTOE(TOENr)="" Set TOENr="" For Set TOENr=$O(arrTOE(TOENr)) Quit:TOENr="" Do WijzigToelevering(TOENr) Quit WijzigToelevering(TOENr) New LEVNr,ToeRec,LeverDagen,ProductieDagen,Toelevering Set ProductieTijdstip="" Set:TOENr LEVNr=$P(^KTO1(TOENr),D),ToeRec=^KTO(LEVNr,TOENr,1),ProductieTijdstip=$P(ToeRec,D,19) Set sFL(1)=LeverDatum_D_VerzendWijze_D_ProductieTijdstip If $G(Closing) { Set:$G(VerzendWijze)="" VerzendWijze=$$DEFAULT^KLVERZW(,KLNr) Set LeverDagen=$$GetLeverDagen(KLNr,ORDNr,TOENr) Set sFL(1)=$S('$LL(LeverDagen):LeverDagen,1:$LI(LeverDagen,$LL(LeverDagen)))_D_VerzendWijze_D Do CalcProductie(.sFL,"L",1) } Else { New ProductieTermijn, ToeleveringLijnIterator, Tandembox, Product, Toelevering, ProductTypeAPI Set ProductieDagen = "?" Set ProductTypeAPI = ##class(DOM.DomeinContext).Instance().GeefProductTypeAPI() Set Toelevering = ##class(DOM.DomeinContext).Instance().GeefToeleveringAPI().GeefToelevering(TOENr) Set ToeleveringLijnIterator = Toelevering.GeefTypeToeleveringLijnIterator(##class(DOM.AKP.enu.ToeleveringLijnType).Product()) Set Tandembox = "" While (ToeleveringLijnIterator.HasNext() && (Tandembox = "")) { Set ProductID = ToeleveringLijnIterator.Next().GeefProductID() If (ProductTypeAPI.IsTandemboxProduct(ProductID)) { Set Tandembox = ProductTypeAPI.GeefTandemboxProduct(ProductID) } } If ($IsObject(Tandembox)) { Set ProductieTermijn = ##class(DOM.VKP.impl.ProductieTermijnBepaler).%New() Set ProductieDagen = ProductieTermijn.GeefAantalProductieDagen(Tandembox,KLNr) } Do EDIT^vhScherm("FLOWOHALC",,,,,,3) } If $G(%SC)!$G(Closing) Do . ;Do CheckLeverWeken(.sFL,ScreenTitel) . ; Opslaan in het order . Set:"`"_$P(OrdRec,D,7)_"`"'[("`"_$P(sFL(1),D,2)_"`") $P(OrdRec,D,7)=$P(sFL(1),D,2) ; Andere verzendwijze . Set $P(OrdRec,D,16)=$$EXTDATE^vhLib.DataTypes($P(sFL(1),D)),$P(OrdRec,D,36)=$P(sFL(1),D) ; Halux productieorder . ; Opslaan in de toelevering . Set LEVNr=$P(^KTO1(TOENr),D) . For Do ADD^vhLock("^KTO(LEVNr,TOENr)") Quit:%TC D LDISP^vhLock("^KTO(LEVNr,TOENr)","Toelevering "_TOENr) . Set TOENr(TOENr)="" . Do PutDueOutProductieTOELEV(LEVNr,TOENr,$P(sFL(1),D,3)) . Do REMOVE^vhLock("^KTO(LEVNr,TOENr)") . Do:'$G(ViaToelevering) ToonHoofding^Flow.ToonDocHoofding . Do RecalcLeverwekenToelevering(TOENr,$G(ViaToelevering)) Do REMOVE^vhLock("^KOD(KLNr,""F"",ORDNr)") Quit ProductieGroepTOELEV(TOENr) New R,ProductieGroep,LevNr,TLNr,PRNr Set R=^KTO1(TOENr),LevNr=$P(R,D),TLNr=100 For Set TLNr=$O(^KTO(LevNr,"F",TOENr,TLNr)) Quit:TLNr="" Do . Set R=^KTO(LevNr,TOENr,TLNr),PRNr=$P(R,D,2) . Quit:'PRNr . Set GenType=$P($$GENTYP^HAD(PRNr),D) . Set ProductieGroep = $S(GenType="TBX":"TBX",GenType="KAD":"KAD",1:1) Set ProductieGroep=$G(ProductieGroep,"TBX") // default TBX Quit ProductieGroep ; ; Verwerken van de productiegegevens vanuit de toelevering ProductieToelevering(TOENr) New R,LEVNr,KLNr,ORNr,blVerzendWijze,blLeveringsTermijn Set LEVNr=$P(^KTO1(TOENr),D),R=^KTO(LEVNr,TOENr,1),ORDNr=$P(R,D,7),KLNr=$P(^KO1(ORDNr,"F"),D) Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) Do ProductieOrder(ORDNr,,1),ToonHoofding^Flow.Toelev.ToonDocHoofding Quit ; ; Controle van het order op afgeleide Halux-producten zonder levertermijn CheckProductieOrder(ORDNr) New R,Ok,KLNr,OLNr,PRNr,ProdKey,LeverWeken,Closed Quit:'ORDNr 0 Quit:'$D(^KO1(ORDNr,"F")) 1 ; Ordernummer bestaat niet meer Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Quit:'$D(^KOD(KLNr,"F",ORDNr,1)) 1 ; Ordernummer bestaat niet meer Set OLNr=100,R=^KOD(KLNr,"F",ORDNr,1),Closed=$P(R,D,22),Ok=Closed If Ok For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) . Quit:'PRNr . Set ProdKey=##class(Prod.Product).%OpenId(PRNr,0) . Do:ProdKey.GenerischeRoutine . . Set ProdKey=##class(Prod.ProductPrijs).%OpenId(PRNr,0) . . If '$D(LeverWeken)!$G(LeverWeken) Set LeverWeken=ProdKey.LeveringsTermijn . Kill ProdKey Set Ok=0 If $D(LeverWeken),'LeverWeken Set Ok=1 Quit Ok ; ; Controle leverweken order met Leverdatum CheckLeverWeken(sFL,Titel) New R,OrdRec,KLNr,OLNr,PRNr,ProdKey,LeverWeken,LeverWeek,Beloofd,BeloofdeWeek,Input Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D),OLNr=100,R=^KOD(KLNr,"F",ORDNr,1),Beloofd=$P(sFL(1),D) For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:$L($G(Input)) . Set OrdRec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(OrdRec,D,2) . Quit:'PRNr . Set LeverWeek=$P(OrdRec,D,25) . Set ProdKey=##class(Prod.Product).%OpenId(PRNr,0) . Do:ProdKey.GenerischeRoutine . . Set ProdKey=##class(Prod.ProductPrijs).%OpenId(PRNr,0) . . Set LeverWeken=ProdKey.LeveringsTermijn . . Quit:LeverWeken . . Quit:LeverWeek=Beloofd . . Set BeloofdeWeek=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(Beloofd,"W","MD"),"DW") . . Set Input=$$^vhTXTPOP("FLOWHALUX","CHKLEVERDAG","",$$EXTDATE^vhLib.DataTypes(Beloofd),BeloofdeWeek,$$EXTDATE^vhLib.DataTypes(LeverWeek),Titel) . Kill ProdKey Quit ; ; Controle leverweken order met Leverdatum, eventueel met aanpassing RecalcLeverweken(ORDNr,ViaToelevering) New R,OrdRec,KLNr,OLNr,PRNr,ProdKey,LeverWeken,LeverWeek,Beloofd,BeloofdeWeek,KortTekst,Modify,Aantal New LEVNr,TOENr,TLNr,ToeRec,ProductieTijdstip,ProductieWeek Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D),OLNr=100,R=^KOD(KLNr,"F",ORDNr,1),Beloofd=$P(R,D,16) For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set OrdRec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(OrdRec,D,2) . Quit:'PRNr . Set Aantal=$P(OrdRec,D,3),LeverWeek=$P(OrdRec,D,25) . Set ProdKey=##class(Prod.Product).%OpenId(PRNr,0) . Do:ProdKey.GenerischeRoutine . . Set ProdKey=##class(Prod.ProductPrijs).%OpenId(PRNr,0) . . Set LeverWeken=ProdKey.LeveringsTermijn . . Quit:LeverWeken . . Quit:LeverWeek=Beloofd . . Set Modify=1 . . Set:Modify BeloofdeWeek=$$INTDATE^vhLib.DataTypes(Beloofd) . . Quit:'$G(Modify) . . Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) . . Set $P(OrdRec,D,25)=BeloofdeWeek,^KOD(KLNr,"F",ORDNr,OLNr)=OrdRec,TOENr=$P(OrdRec,D,27),TLNr=$P(OrdRec,D,28) . . Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) . . Do ProductOrderLijnGewijzigd^FLOWORD2(KLNr,ORDNr,OLNr,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Leverdatum()) . . Quit:'TOENr Quit:'TLNr . . Set LEVNr=$P(^KTO1(TOENr),D),ToeRec=^KTO(LEVNr,TOENr,1),ProductieTijdstip=$P(ToeRec,D,19) . . Quit:ProductieTijdstip="" . . Set ProductieWeek=$$EXTDATE^vhLib.DataTypes(ProductieTijdstip,"DW"),ToeRec=^KTO(LEVNr,TOENr,TLNr) . . Quit:$P(ToeRec,D,25)=ProductieWeek . . Do KWNODE^FLOWTOE(LEVNr,TOENr,TLNr) . . Set $P(ToeRec,D,25)=ProductieWeek,^KTO(LEVNr,TOENr,TLNr)=ToeRec . . Do SWNODE^FLOWTOE(LEVNr,TOENr,TLNr) . . Do ProductToeleveringLijnGewijzigd^FLOWTOE2(LEVNr,TOENr,TLNr,##class(DOM.AKP.enu.ProductToeleveringLijnWijzigingType).Leverdatum()) . Kill ProdKey,Modify Do:$G(ViaToelevering) WL^PROC Quit ; ; Controle leverweken toelevering met productiedatum, eventueel met aanpassing RecalcLeverwekenToelevering(TOENr,ViaToelevering) New R,LEVNr,ToeRec,ProductieTijdstip Set LEVNr=$P(^KTO1(TOENr),D),ToeRec=^KTO(LEVNr,TOENr,1),ProductieTijdstip=$P(ToeRec,D,19) Do:ProductieTijdstip . New TLNr,ProductieWeek,PRNr,ProdKey,LeverWeken . Set ProductieWeek=$$EXTDATE^vhLib.DataTypes(ProductieTijdstip,"DW"),TLNr=100 . For Set TLNr=$O(^KTO(LEVNr,TOENr,TLNr)) Quit:TLNr="" Do . . Set ToeRec=^KTO(LEVNr,TOENr,TLNr),PRNr=$P(ToeRec,D,2) . . Quit:'PRNr . . Set ProdKey=##class(Prod.Product).%OpenId(PRNr,0) . . Do:ProdKey.GenerischeRoutine . . . Set ProdKey=##class(Prod.ProductPrijs).%OpenId(PRNr,0) . . . Set LeverWeken=ProdKey.LeveringsTermijn . . . Quit:LeverWeken . . . Quit:$P(ToeRec,D,25)=ProductieWeek . . . Do KWNODE^FLOWTOE(LEVNr,TOENr,TLNr) . . . Set $P(ToeRec,D,25)=ProductieWeek,^KTO(LEVNr,TOENr,TLNr)=ToeRec . . . Do SWNODE^FLOWTOE(LEVNr,TOENr,TLNr) . . . Do ProductToeleveringLijnGewijzigd^FLOWTOE2(LEVNr,TOENr,TLNr,##class(DOM.AKP.enu.ProductToeleveringLijnWijzigingType).Leverdatum()) Do:$G(ViaToelevering) WL^PROC Quit ; ; Controle van de gelinkte toelevering CheckProductieToelevering(TOENr) New R,ORNr Set LEVNr=$P(^KTO1(TOENr),D),R=^KTO(LEVNr,TOENr,1),ORDNr=$P(R,D,7) Quit $S(ORDNr:$S($D(^KO1(ORDNr,"F")):$$CheckProductieOrder(ORDNr),1:0),1:0) ; ; Opvragen van de productiegegevens (datum en tijd) Productie(Productie) New %SC,R,X,ProductieDatum,ProductieTijdstip Set ProductieDatum=$P(Productie,","),ProductieTijdstip=$P(Productie,",",2) For Do FIELDI^vhScherm("PRODDATUM") Quit:'$G(%SC) Do Quit:$G(%SC) . Set X=ProductieDatum_","_ProductieTijdstip . Do PUT^vhScherm("PRODUCTIE",X) . Kill %SC . Do FIELDI^vhScherm("PRODTIJD") If $G(%SC) Set Productie=ProductieDatum_","_ProductieTijdstip Else Do PUT^vhScherm("PRODUCTIE",Productie) Quit Productie ; Controle bij de ingave van de productiedatum ValidateProductieDatum(ProductieDatum) New Validate Set Validate=1 Do:ProductieDatum . If '$$ISARBDAG^vhRtn2(ProductieDatum),'$$TXTPOP^FLOW("HALUXABD","",$$EXTDATE^vhLib.DataTypes(ProductieDatum)) Set Validate=0 ; Geen arbeidsdag . Do:Validate . . Quit:ProductieDatum'<$H . . Set Validate=$$^vhTXTPOP("FLOWHALUX","PRODDATE<$H","",$$EXTDATE^vhLib.DataTypes(ProductieDatum),$$EXTDATE^vhLib.DataTypes()) ; Kleiner dan vandaag Quit Validate ; ValidateProductieTijdStip Set:'X X=$$DefaultProductieTijdStip($P($P(sFL(1),D,2),";")) If X'<$$INTTIME^vhLib.DataTypes("07:00"),X'>$$INTTIME^vhLib.DataTypes("18:00") Else Set sEr="Moet begrepen zijn tussen 07:00 en 18:00 uur" Quit ; DefaultProductieTijdStip(VerzendWijze,Vertaald) New DefaultTijdStip Set DefaultTijdStip=$P(^RES("KLANT","PI","VERZENDWIJZE","D",VerzendWijze),"`",10) Set:DefaultTijdStip="" DefaultTijdStip="""""" Xecute "Set DefaultTijdStip="_DefaultTijdStip Set:'DefaultTijdStip DefaultTijdStip=$$INTTIME^vhLib.DataTypes("17:00") Set:$G(Vertaald) DefaultTijdStip=$$EXTTIME^vhLib.DataTypes(DefaultTijdStip) Quit DefaultTijdStip ; ; Herrekenen van de parameters van de levertermijn CalcProductie(sFL,Basis,BackGround) New I,R,LeverDatum,VerzendWijze,TempVerzendWijze,ProductieDatum,ProductieTijdstip Set Basis=$G(Basis),LeverDatum=$P(sFL(1),D),VerzendWijze=$P(sFL(1),D,2),ProductieTijdstip=$P(sFL(1),D,3) Set:$G(VerzendWijze)="" VerzendWijze=$$DEFAULT^KLVERZW(,KLNr) Set TempVerzendWijze=VerzendWijze If Basis="L" Do ; Leverdatum . Set VerzendWijze=$P(VerzendWijze,"`") . Set ProductieTijdstip=$$CALCDATE^vhLib.DataTypes(LeverDatum,"A",-1)_","_$$DefaultProductieTijdStip($P(VerzendWijze,";")) Else If Basis="P" Do ; Productietijdstip . Set LeverDatum=blLeveringsTermijn.GetVroegsteLeverDag(ProductieTijdstip) Else Do ; Verzendwijze . Quit:'$P(VerzendWijze,";",2) . Set LeverDatum=$$CALCDATE^vhLib.DataTypes(LeverDatum,"W","FD")+($P(VerzendWijze,";",2)-1) . For Quit:$$ISARBDAG^vhRtn2(LeverDatum)&(LeverDatum>$H) Set LeverDatum=LeverDatum+7 . Set ProductieTijdstip=$$CALCDATE^vhLib.DataTypes(LeverDatum,"A",-1)_","_$$DefaultProductieTijdStip($P(VerzendWijze,";")) Set:$P(VerzendWijze,";",2) $P(VerzendWijze,";",2)=$$EXTDATE^vhLib.DataTypes(LeverDatum,"DWN") ; Invullen en eventueel tonen van de gegevens op het scherm If $G(BackGround) Set sFL(1)=LeverDatum_D_TempVerzendWijze_D_ProductieTijdstip Else Do . Do PUT^vhScherm("LEVERDATUM",LeverDatum,$G(sModT)="F") . Do PUT^vhScherm("VERZENDW",TempVerzendWijze,$G(sModT)="F") . Do PUT^vhScherm("PRODUCTIE",ProductieTijdstip,$G(sModT)="F") Quit ; ; Selecteer een leverdag SelectLeverDag(KLNr,ORDNr,OldSel) New %SC,zb,I,R,X,LeverDatum,LeverDagen Set OldSel=$G(OldSel) Set LeverDagen=$$GetLeverDagen^FLOWORD5(KLNr,ORDNr) For Do Quit:LeverDatum Quit:LeverDatum=""&'$D(%SC) . Set LeverDatum=$$GetLeverDag^FLOW3(KLNr,,OldSel,,LeverDagen) . Quit:LeverDatum'="?" . ; Kies een dag verschillend van de standaard leverdagen . Set LeverDatum=OldSel ;,OldSel=$P(LeverDagen,D) . Do STORE^vhTERMINA() . Do FIELD^vhScherm("FLOWOHALC","LEVERDAG") . Do REFRESH^vhTERMINA() Quit LeverDatum ; ; Wijzigen van de tandembox en legrabox productiedagen ModTBXProdDagen New R,sFL,ModFrom,ModTo,From,To,Subject,Body,K,DisplayOnly,TAX,TAXVan New AlleVoor New LBXBulk,LBXProbox,LBXKarton,LBXVHOSS New LBXBulkVan,LBXProboxVan,LBXKartonVan,LBXVHOSSVan New TBXBulk,TBXProbox,TBXKarton,TBXVHOSS New TBXBulkVan,TBXProboxVan,TBXKartonVan,TBXVHOSSVan New TAORProboxVan,TAORKartonVan New TAORProbox,TAORKarton Set LBXBulk = ##class(DOM.VKP.impl.LBXProductieDagenData).OpenId("Bulk") Set LBXProbox = ##class(DOM.VKP.impl.LBXProductieDagenData).OpenId("Probox") Set LBXKarton = ##class(DOM.VKP.impl.LBXProductieDagenData).OpenId("Karton") Set LBXVHOSS = ##class(DOM.VKP.impl.LBXProductieDagenData).OpenId("VHOSS") Set TBXBulk = ##class(DOM.VKP.impl.TBXProductieDagenData).OpenId("Bulk") Set TBXProbox = ##class(DOM.VKP.impl.TBXProductieDagenData).OpenId("Probox") Set TBXKarton = ##class(DOM.VKP.impl.TBXProductieDagenData).OpenId("Karton") Set TBXVHOSS = ##class(DOM.VKP.impl.TBXProductieDagenData).OpenId("VHOSS") Set TAORProbox = ##class(DOM.VKP.impl.TAORProductieDagenData).OpenId("Probox") Set TAORKarton = ##class(DOM.VKP.impl.TAORProductieDagenData).OpenId("Karton") Set AlleVoor = LBXBulk.GlobaleDefault_D_LBXProbox.GlobaleDefault_D_LBXKarton.GlobaleDefault_D_LBXVHOSS.GlobaleDefault Set AlleVoor = AlleVoor _D_TBXBulk.GlobaleDefault_D_TBXProbox.GlobaleDefault_D_TBXKarton.GlobaleDefault_D_TBXVHOSS.GlobaleDefault Set AlleVoor = AlleVoor _D_TAORProbox.GlobaleDefault_D_TAORKarton.GlobaleDefault Set sFL(1) = AlleVoor Set LBXBulkVan=$P(sFL(1),D,1), LBXProboxVan=$P(sFL(1),D,2), LBXKartonVan=$P(sFL(1),D,3) ,LBXVHOSSVan=$P(sFL(1),D,4) Set TBXBulkVan=$P(sFL(1),D,5), TBXProboxVan=$P(sFL(1),D,6), TBXKartonVan=$P(sFL(1),D,7) ,TBXVHOSSVan=$P(sFL(1),D,8) Set TAORProboxVan=$P(sFL(1),D,9), TAORKartonVan=$P(sFL(1),D,10) Do DISPLAY^vhScherm("TBXPRODAG") Set FP=2301 Write @F,"Druk op om verder te gaan : " Read K If $ZCVT(K,"U")="WIJZIG" { Lock +ProductieDagenData:1 Else Set DisplayOnly=1 Do NIEUW^vhScherm("TBXPRODAG",,,,,,,"A") If (AlleVoor '= sFL(1)) { Quit:$$^vhTXTPOP("FILE","SAVE2")'="J" Set LBXBulk.GlobaleDefault=$P(sFL(1),D,1) Set LBXProbox.GlobaleDefault=$P(sFL(1),D,2) Set LBXKarton.GlobaleDefault=$P(sFL(1),D,3) Set LBXVHOSS.GlobaleDefault=$P(sFL(1),D,4) Set TBXBulk.GlobaleDefault=$P(sFL(1),D,5) Set TBXProbox.GlobaleDefault=$P(sFL(1),D,6) Set TBXKarton.GlobaleDefault=$P(sFL(1),D,7) Set TBXVHOSS.GlobaleDefault=$P(sFL(1),D,8) Set TAORProbox.GlobaleDefault=$P(sFL(1),D,9) Set TAORKarton.GlobaleDefault=$P(sFL(1),D,10) Do LBXBulk.Save() Do LBXProbox.Save() Do LBXKarton.Save() Do LBXVHOSS.Save() Do TBXBulk.Save() Do TBXProbox.Save() Do TBXKarton.Save() Do TBXVHOSS.Save() Do TAORProbox.Save() Do TAORKarton.Save() If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("LBX_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") { Set LBXBulkProductieDagen = $P(sFL(1),D,1) Set LBXProboxProductieDagen = $P(sFL(1),D,2) Set LBXKartonProductieDagen = $P(sFL(1),D,3) Set LBXVHOSSProductieDagen = $P(sFL(1),D,4) Do ##class(vhPowerTools.DOM.VKP.impl.ProductieDagen.LBXProductieDagenDataKlantDefaults).%New().UpdateVasteProductiedagenTAOR(LBXBulkProductieDagen, LBXProboxProductieDagen, LBXKartonProductieDagen, LBXVHOSSProductieDagen) } If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("TBX_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") { Set TBXBulkProductieDagen = $P(sFL(1),D,5) Set TBXProboxProductieDagen = $P(sFL(1),D,6) Set TBXKartonProductieDagen = $P(sFL(1),D,7) Set TBXVHOSSProductieDagen = $P(sFL(1),D,8) Do ##class(vhPowerTools.DOM.VKP.impl.ProductieDagen.TAORProductieDagenDataKlantDefaults).%New().UpdateVasteProductiedagenTAOR(TBXBulkProductieDagen, TBXProboxProductieDagen, TBXKartonProductieDagen, TBXVHOSSProductieDagen) } If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("TAOR_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") { Set TAORProboxProductieDagen = $P(sFL(1),D,9) Set TAORKartonProductieDagen = $P(sFL(1),D,10) Do ##class(vhPowerTools.DOM.VKP.impl.ProductieDagen.TAORProductieDagenDataKlantDefaults).%New().UpdateVasteProductiedagenTAOR(TAORProboxProductieDagen, TAORKartonProductieDagen) } Set From=$$$SystemMail("Productie") Set To=$LB(##class(TECH.Config.ConfigMgr).Instance().GetString("FLOWHALUX_ModTBXProdDagen_MailTo")) Set Subject="TBX/LBX/TA'OR productiedagen" Set Body="De TBX/LBX/TA'OR productiedagen zijn door "_$$USERNAME^vhUSER(,2)_" gewijzigd.
" Set Body=Body_"
LBX Karton: D+"_LBXKartonVan_$S(LBXKartonVan'=LBXKarton.GlobaleDefault:" naar D+"_LBXKarton.GlobaleDefault_".",1:"") Set Body=Body_"
LBX Bulk: D+"_LBXBulkVan_$S(LBXBulkVan'=LBXBulk.GlobaleDefault:" naar D+"_LBXBulk.GlobaleDefault_".",1:"") Set Body=Body_"
LBX Probox: D+"_LBXProboxVan_$S(LBXProboxVan'=LBXProbox.GlobaleDefault:" naar D+"_LBXProbox.GlobaleDefault_".",1:"") Set Body=Body_"
LBX VHOSS: D+"_LBXVHOSSVan_$S(LBXVHOSSVan'=LBXVHOSS.GlobaleDefault:" naar D+"_LBXVHOSS.GlobaleDefault_".",1:"") Set Body=Body_"
" Set Body=Body_"
TBX Karton: D+"_TBXKartonVan_$S(TBXKartonVan'=TBXKarton.GlobaleDefault:" naar D+"_TBXKarton.GlobaleDefault_".",1:"") Set Body=Body_"
TBX Bulk: D+"_TBXBulkVan_$S(TBXBulkVan'=TBXBulk.GlobaleDefault:" naar D+"_TBXBulk.GlobaleDefault_".",1:"") Set Body=Body_"
TBX Probox: D+"_TBXProboxVan_$S(TBXProboxVan'=TBXProbox.GlobaleDefault:" naar D+"_TBXProbox.GlobaleDefault_".",1:"") Set Body=Body_"
TBX VHOSS: D+"_TBXVHOSSVan_$S(TBXVHOSSVan'=TBXVHOSS.GlobaleDefault:" naar D+"_TBXVHOSS.GlobaleDefault_".",1:"") Set Body=Body_"
" Set Body=Body_"
TAOR Karton: D+"_TAORKartonVan_$S(TAORKartonVan'=TAORKarton.GlobaleDefault:" naar D+"_TAORKarton.GlobaleDefault_".",1:"") Set Body=Body_"
TAOR Probox: D+"_TAORProboxVan_$S(TAORProboxVan'=TAORProbox.GlobaleDefault:" naar D+"_TAORProbox.GlobaleDefault_".",1:"") Set Body=Body_"
" If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("TBX_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") { Set Message = ##class(TECH.Config.ConfigMgr).Instance().GetString("ExtraBoodschapMail_TBX_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") If Message = "" { Set Message = "OPGELET: De D+ voor TBX wordt nu tijdelijk ook ingesteld voor Daro, LABONORM, Keller Keukens, SFS, Hafele Duitsland, die normaal met een vast aantal productiedagen werken. Dit om de verlofperiode op te vangen." } Set Body=Body_"
"_Message } If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("LBX_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") { Set Message = ##class(TECH.Config.ConfigMgr).Instance().GetString("ExtraBoodschapMail_LBX_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") If Message = "" { Set Message = "OPGELET: De D+ voor LBX wordt nu tijdelijk ook ingesteld voor Daro, LABONORM, Keller Keukens,SFS en Hafele Duitsland, die normaal met een vast aantal productiedagen werken. Dit om de verlofperiode op te vangen." } Set Body=Body_"
"_Message } If ##class(TECH.Config.ConfigMgr).Instance().GetBoolean("TAOR_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") { Set Message = ##class(TECH.Config.ConfigMgr).Instance().GetString("ExtraBoodschapMail_TAOR_VasteAantalProductiedagen_SyncroniserenmetGewoneAantalProductieDagen") If Message = "" { Set Message = "OPGELET: De D+ voor TAOR Karton & Probox wordt nu tijdelijk ook ingesteld voor SFS en Hafele Duitsland, die normaal met een vast aantal productiedagen werken. Dit om de verlofperiode op te vangen." } Set Body=Body_"
"_Message } Set R=$$SendMiniMail^vhLib(From,To,Subject,Body,,1) } } Lock -ProductieDagenData Quit ; ; Verzamel alle leverdagen van een order GetLeverDagen(KLNr,ORDNr,TOENr) New R,LeverDag,LeverDagen,OLNr,PRNr Set OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) . Quit:'PRNr Quit:$P(R,D,27)'=TOENr . Set LeverDag=$P(R,D,25) Set:LeverDag LeverDagen(LeverDag)="" Set (LeverDagen,LeverDag)="" For Set LeverDag=$O(LeverDagen(LeverDag)) Quit:LeverDag="" Set LeverDagen=LeverDagen_$LB(LeverDag) Quit LeverDagen ; ; Hebben alle lijnen van die prductiegroep de juiste datum LeverDatumOk(ORDNr,ProductieGroep) New R,OrdRec,KLNr,OLNr,PRNr,Beloofd,LeverDatumOk Set LeverDatumOk=1,R=^KO1(ORDNr,"F"),KLNr=$P(R,D),OLNr=100,R=^KOD(KLNr,"F",ORDNr,1),Beloofd=$$INTDATE^vhLib.DataTypes($P(R,D,16)) For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:'LeverDatumOk . Set OrdRec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(OrdRec,D,2) . Quit:'PRNr Quit:$P($$GENTYP^HAD(PRNr),D)'=ProductieGroep . Set LeverDatumOk=$P(OrdRec,D,25)=Beloofd Quit LeverDatumOk ; ProductieGroep(ORDNr) New R,ProductieGroep,KLNr,OLNr,PRNr Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D),OLNr=100 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) . Quit:'PRNr . Set ProductieGroep=$P($$GENTYP^HAD(PRNr),D) . Set:$L(ProductieGroep) ProductieGroep(ProductieGroep)="" Set ProductieGroep="TBX" Set:'$D(ProductieGroep(ProductieGroep)) ProductieGroep=$O(ProductieGroep("")) Set:ProductieGroep="" ProductieGroep="TBX" Quit ProductieGroep