FLOWHALUX ;Halux [ 11/04/2003 1:20 PM ] #include BL.Derde.LevSpecifiek ;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) 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 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) . ; vroegste . Set:'VroegsteDueOut||($$DIFFTIME^vhDTyp(DueOut,VroegsteDueOut)>0) VroegsteDueOut=DueOut Quit VroegsteDueOut DefaultFromWeek(PRNr,ToeLevWk) Quit $$CALCDATE^vhDTyp($$INTDATE^vhDTyp(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^vhDTyp(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 Set ProductieTijdstip="" Set:TOENr LEVNr=$P(^KTO1(TOENr),D),ToeRec=^KTO(LEVNr,TOENr,1),ProductieTijdstip=$P(ToeRec,D,19) //Set ProductieGroep=$$ProductieGroepTOELEV(TOENr) Set sFL(1)=LeverDatum_D_VerzendWijze_D_ProductieTijdstip If $G(Closing) Do . 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 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^vhDTyp($P(sFL(1),D)),$P(OrdRec,D,36)=$P(sFL(1),D) ; Halux productieorder . ;Set ^KOD(KLNr,"F",ORDNr,1)=OrdRec,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:'PRNr Quit:'TOENr Quit:$D(TOENr(TOENr)) . ; 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) ^KF12 . //Do:'$$LeverDatumOk(ORDNr,ProductieGroep) RecalcLeverweken(ORDNr,$G(ViaToelevering)) . 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),^KTO12 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^vhDTyp($$CALCDATE^vhDTyp(Beloofd,"W","MD"),"DW") . . Set Input=$$^vhTXTPOP("FLOWHALUX","CHKLEVERDAG","",$$EXTDATE^vhDTyp(Beloofd),BeloofdeWeek,$$EXTDATE^vhDTyp(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^vhDTyp(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^vhDTyp(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^vhDTyp(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 leverdatum ValidateLeverDatum(LeverDatum) New Validate,ProductieDatum,ProductieDagen Set Validate=1 Do:LeverDatum . If '$$ISARBDAG^vhRtn2(LeverDatum),'$$TXTPOP^FLOW("HALUXABD","",$$EXTDATE^vhDTyp(LeverDatum)) Set Validate=0 ; Geen arbeidsdag . Do:Validate . . Set ProductieDatum=$$CALCDATE^vhDTyp(LeverDatum,"A",-1) . . Quit:ProductieDatum'<$H . . Set Validate=$$^vhTXTPOP("FLOWHALUX","PRODDATE<$H","",$$EXTDATE^vhDTyp(ProductieDatum),$$EXTDATE^vhDTyp()) ; Kleiner dan vandaag . Do:Validate . . Set ProductieDagen=$$ProductieDagen() . . Quit:$$CALCDATE^vhDTyp(,"A",ProductieDagen)'>(ProductieDatum+1) . . Set Validate=$$^vhTXTPOP("FLOWHALUX","CALCPRODDATE","",$$EXTDATE^vhDTyp(ProductieDatum),ProductieDagen) ; Kan in principe niet cfr productiedagen Quit Validate ; ; Controle bij de ingave van de productiedatum ValidateProductieDatum(ProductieDatum) New Validate Set Validate=1 Do:ProductieDatum . If '$$ISARBDAG^vhRtn2(ProductieDatum),'$$TXTPOP^FLOW("HALUXABD","",$$EXTDATE^vhDTyp(ProductieDatum)) Set Validate=0 ; Geen arbeidsdag . Do:Validate . . Quit:ProductieDatum'<$H . . Set Validate=$$^vhTXTPOP("FLOWHALUX","PRODDATE<$H","",$$EXTDATE^vhDTyp(ProductieDatum),$$EXTDATE^vhDTyp()) ; Kleiner dan vandaag Quit Validate ; ValidateProductieTijdStip Set:'X X=$$DefaultProductieTijdStip($P($P(sFL(1),D,2),";")) If X'<$$INTTIME^vhDTyp("07:00"),X'>$$INTTIME^vhDTyp("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^vhDTyp("17:00") Set:$G(Vertaald) DefaultTijdStip=$$EXTTIME^vhDTyp(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^vhDTyp(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^vhDTyp(LeverDatum,"W","FD")+($P(VerzendWijze,";",2)-1) . For Quit:$$ISARBDAG^vhRtn2(LeverDatum)&(LeverDatum>$H) Set LeverDatum=LeverDatum+7 . Set ProductieTijdstip=$$CALCDATE^vhDTyp(LeverDatum,"A",-1)_","_$$DefaultProductieTijdStip($P(VerzendWijze,";")) Set:$P(VerzendWijze,";",2) $P(VerzendWijze,";",2)=$$EXTDATE^vhDTyp(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 ; ; Bepaal het aantal prodctiedagen ProductieDagen(VerzendWijze) New ProductieDagen Set ProductieDagen=$S($L($G(VerzendWijze)):$P(^RES("KLANT","PI","VERZENDWIJZE","D",$P(VerzendWijze,";")),"`",9),1:"") Set:ProductieDagen="" ProductieDagen=$P($G(^HADPR("DAGPLUS"),3),"\",1) Quit ProductieDagen ; ; Geef alle mogelijke leverdagen voor een klant voor een aantal weken GetLeverDatums(KLNr,VerzendWijze,Weken) New ProductieDagen,MinLeverDag Set:$G(VerzendWijze)="" VerzendWijze=$$DEFAULT^KLVERZW(,KLNr) Set Weken=$G(Weken,4) Set ProductieDagen=$$ProductieDagen(VerzendWijze) Set MinLeverDag=$$CALCDATE^vhDTyp(,"A",ProductieDagen) Quit $$GetLeverDatums^KLVERZW(KLNr,MinLeverDag,MinLeverDag+(Weken*7)-1,,D,VerzendWijze) ; ; 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 tandemboxproductiedagen ModTBXProdDagen New R,sFL,ModFrom,ModTo,From,To,Subject,Body Set sFL(1)=$P($G(^HADPR("DAGPLUS"),3),"\",1),ModFrom=$P(sFL(1),D) Do NIEUW^vhScherm("TBXPRODAG",,,,,,,"A") If %SC,sFL(1)'=$P($G(^HADPR("DAGPLUS")),"\",1) Do . Quit:$$^vhTXTPOP("FILE","SAVE2")'="J" . Set $P(^HADPR("DAGPLUS"),"\",1)=sFL(1),ModTo=$P(sFL(1),D) . Set From=$ZUTIL(110)_"@VANHOECKE.BE" . Set To=$$MailTo^vhUSER(##Class(TECH.Config.ConfigMgr).Instance().GetString("FLOWHALUX_ModTBXProdDagen_MailTo"),1) . Set Subject="TBX productiedagen" . Set Body="De TBX productiedagen zijn door "_$$USERNAME^vhUSER(,2)_" gewijzigd van D+"_ModFrom_" naar D+"_ModTo_"." . Set R=$$SendMiniMail^vhLib(From,To,Subject,Body) 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^vhDTyp($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