#Include Prod.Product FLOWORD4 ;Order [ 06/30/2003 2:41 PM ] ; ; Wijzig lijn LMODIFY(Input,Default) New PRNr,LEVNr Quit:'$D(Detail) Set K=^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))) If $P($P(K,D,17),"#")="KF11" Do WIJZIG^FLOWTEXT(Q_UGL,ORDNr,Detail(@DL(1)@(6)),"FLOWORD") Quit Do .Set PRNr=$P(K,D,2),LEVNr=$$LEVNR^PRODUKT2(PRNr) .If Input'="P",LEVNr'=6332,$$CHECKWMS^FLOW(,,ORDNr,Detail(@DL(1)@(6)),,,1) Quit .Set Default=$G(Default) .Do Ingave^Flow.Order.WijzigOrderlijn(Detail(@DL(1)@(6)),Input,Default) .If Input="A"!(Input="L") Do LRECALC^FLOWORD(KLNr,ORDNr,Detail(@DL(1)@(6)),2) .Do:Input="P" RecalcCommKort^FLOWMANL("KOD",KLNr,ORDNr,,1) If @DL(1)@(6)=@DL(1)@(9) Do EL^PROC Quit Set DL(2)="DO" Do ML^PROC Kill DL(2) Quit ; ; Wijzig alle lijnen AMODIFY(Input) New Default,PRNr,Asap Quit:'$D(Detail) Set Input=$E(Input,2) Quit:Input'="L" If Input="L" Do .Do DL^PROC .Set Default=$$DEFAULT^Flow.Order.WijzigOrderlijnInput(Input) .Do EL^PROC Quit:Default="-" Set Asap=(Default="Asap") Set DL(2)="HO" Do ML^PROC Kill DL(2) Do:Asap ASAP(KLNr,ORDNr) Quit:Asap For Do If @DL(1)@(6)=@DL(1)@(9) Do Quit .Set PRNr=$P(^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))),D,2) .If 'PRNr Set DL(2)="DO" Do ML^PROC Kill DL(2) Quit .Do LMODIFY(Input,Default) Quit ; ; Toggle alle lijnen ToggleLijnen() New Default Set DL(2)="HO" Do ML^PROC Kill DL(2) For Do If @DL(1)@(6)=@DL(1)@(9) Do:@DL(1)@(6)'=1 Quit .If '$P(^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))),D,2) Set DL(2)="DO" Do ML^PROC Kill DL(2) Quit .Set Default=-$P(^KOD(KLNr,"F",ORDNr,Detail(@DL(1)@(6))),D,3) .Do LMODIFY("A",Default) Quit ; ; KS kwantumkorting voor tandembox KSTBXKWK(KLNr,ORDNr,OLNr,Display,KortTyp,ORecalc) New K,R,Rec,BrutoPr,OrdDat,OrdMunt,LijnMunt,PrMunt,Closed,PRNr,TbxAant,Aantal,Prijs New Netto,Bruto,Eenheid,LevTerm,Round,OrdTyp,KortTxt,OudePr,NieuwePr,TempLNr, KlantID,IsKSKlant,Klant Set ORecalc=$G(ORecalc) If '$D(KlMunt)!'$D(IsHandel) New KlMunt,IsHandel Do INITKL^FLOWORD2 New SpecPrys,Korting,Korting1,Korting2,OptKort Set (OLNr,TempLNr)=$G(OLNr),Display=$G(Display),KortTyp=$G(KortTyp) If Display Set FP=UL*100+1 Write @F,@F1 Set R=^KOD(KLNr,"F",ORDNr,1),OrdDat=$P(R,D,2),OrdMunt=$P(R,D,18),Closed=$P(R,D,22) Set OrdTyp=$P(R,D,25),BrutoPr=$P(R,D,27) #dim KlantID As DOM.VKP.VanHoeckeKlantID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KLNr) #dim IsKSKlant As %Boolean = '(##class(DOM.DomeinContext).Instance().GeefKlantTypeAPI().IsIndustriePoolKlant(KlantID)) #dim Klant As DOM.VKP.Klant = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefKlant(KlantID) Do:(IsKSKlant) .D ##class(vhLib.Logger).%New().Info("FLOWORD4","Kwantumkorting wordt berekend"_$C(13,10)_"Klant : "_KlantID_$C(13,10)_"Order : "_ORDNr_$C(13,10)_$$GetStackToString^vhLib.System()) .If OLNr Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) If PRNr Quit:'$$ISTBX^PRODUKT2(PRNr) ; Is de toegevoegde of gewijzigde lijn een TB .Set TbxAant=0,OLNr=100 ; Totaliseren van de aantallen .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do ..Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) ..Quit:'PRNr Quit:'$$ISTBX^PRODUKT2(PRNr) ..Set TbxAant=TbxAant+$P(Rec,D,3) .Quit:'TbxAant .Do:Display DL^PROC .Set OLNr=100 ; Invullen van de kwantumkorting .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do ..Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) ..Quit:'PRNr Quit:'$$ISTBX^PRODUKT2(PRNr) ..Quit:$P(Rec,D,26)="*" Quit:$P(Rec,D,26)="=" ..If $L(KortTyp),$P(Rec,D,26)'=KortTyp Quit ..Set LijnMunt=$P(Rec,D,22) If Closed,OrdMunt'=LijnMunt,KlMunt'="MTL" Quit ..Set Aantal=$P(Rec,D,3),Round=$P(Rec,D,21),LevTerm=$P(Rec,D,25),SpecPrys=$P(Rec,D,26) ..Set (Korting1,Korting2,SpecPrys)="" ..Do STORE^vhTERMINA() ..Set R=$$GetKorting^KORTING(KLNr,PRNr,"N",OrdDat,TbxAant,LevTerm,$S(Display:"D",1:"")) ..Do REFRESH^vhTERMINA() ..Set Korting1=$LG(R,2),Korting2=$LG(R,3),OptKort=$S($LG(R,6)="O":"O",1:""),R=$P(Rec,D,7) ..If '$L(KortTyp),"O"'[$P(Rec,D,26),Korting1+Korting2'>($P(R,"#")+$P(R,"#",2)) Quit ..Set R=$$PROD^KPRIJS(PRNr,Korting1,Korting2,KlMunt,BrutoPr,IsHandel,,,,,Klant.GeefBusinessType()) ..Set Prijs=$J($P(R,D),0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) ..Set PrMunt=$P(R,D,2) ..If Closed,OrdMunt'=PrMunt,'ORecalc Do Quit ...Set R=$$TXTPOP^FLOW("ORECALC","","OrdMunt","PrMunt") ..Set Korting1=$P(R,D,5),Korting2=$P(R,D,6),Round=$P(R,D,10),Eenheid=$P(R,D,11) ..If Prijs=$P(Rec,D,6),Korting1=$P($P(Rec,D,7),"#"),Korting2=$P($P(Rec,D,7),"#",2) ..Else If Closed,OLNr'=TempLNr Do Quit:$$^vhTXTPOP("FLOWORD","KSTBXKWK","",KortTxt,OudePr,NieuwePr) ...Set KortTxt=$P(^KPR(PRNr,0),D) ...Set OudePr=$P(Rec,D,6),NieuwePr=Prijs ...Set:$P($P(Rec,D,7),"#") OudePr=OudePr_" ("_$$FMTKORT^FLOW($P($P(Rec,D,7),"#"),$P($P(Rec,D,7),"#",7))_"%)" ...Set:Korting1 NieuwePr=NieuwePr_" ("_$$FMTKORT^FLOW(Korting1,Korting2)_"%)" ..Set Netto=$J(Aantal/Eenheid*Prijs,0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) ..If BrutoPr Set Prijs=$J($P(R,D,4),0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()),Netto=$J(Prijs*(100-Korting1)/100*(100-Korting2)/100*Aantal/Eenheid,0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()) ..Set Bruto=$J(Aantal/Eenheid*Prijs,0,##class(APPS.VKP.OrderlijnPrijsBepaler).GeefAantalDecimalen()),Korting=Korting1_"#"_Korting2 ..If Display Do CALCTOT^FLOW(-$P(Rec,D,9),$P(Rec,D,22),1) ..Set $P(Rec,D,6)=Prijs,$P(Rec,D,7)=Korting,$P(Rec,D,9)=Netto,$P(Rec,D,10)=Netto,$P(Rec,D,16)=Bruto ..If KlMunt="MTL" Set ($P(Rec,D,22),LijnMunt)=PrMunt ..If Display Do CALCTOT^FLOW(Netto,$P(Rec,D,22),1) ..If OrdTyp="C"!(OrdTyp="A") Set OptKort="=" ..Set $P(Rec,D,21)=Round,$P(Rec,D,26)=OptKort ..Set ^KOD(KLNr,"F",ORDNr,OLNr)=Rec ..If Closed,OrdMunt'=LijnMunt Set R=^KOD(KLNr,"F",ORDNr,1),$P(R,D,18)=LijnMunt,^KOD(KLNr,"F",ORDNr,1)=R .If Display Do WL^PROC Quit ; TBXAANT(KLNr,ORDNr,Date) New R,OLNr,Rec,PRNr,TbxAant Set ORDNr=$G(ORDNr),Date=$G(Date,+$H),TbxAant=0 If ORDNr Do .Set Rec=^KOD(KLNr,"F",ORDNr,1),OLNr=100 .Quit:$$INTDATE^vhLib.DataTypes($P(Rec,D,2))'=Date .For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:'OLNr Do ..Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) ..If PRNr,$$ISTBX^PRODUKT2(PRNr) Set TbxAant=TbxAant+$P(Rec,D,3) Else For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Set TbxAant=TbxAant+$$TBXAANT(KLNr,ORDNr,Date) Quit TbxAant ; ; Synchroniseren order of orderlijn aan de toelevering (vraagstelling) SYNCTOE(ORDNr,SyncOLNr) New zb,R,IsKomOrd,IsKomLijn,KLNr,OLNr,PRNr,TOENr Set SyncOLNr=$G(SyncOLNr),KLNr=$P(^KO1(ORDNr,"F"),D),(IsKomOrd,IsKomLijn)=0,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 . Set IsKomOrd=1 Set:OLNr=SyncOLNr IsKomLijn=1 . Set OLNr(OLNr)=TOENr,TOENr(TOENr)="" If 'IsKomLijn Set Modify="O" Else If IsKomLijn,$O(OLNr($O(OLNr(""))))="" Set Modify="L" ; Er is slechts een lijn en ik sta erop Else Set Modify=$$^vhTXTPOP("FLOWORD","SYNCTOE","",ORDNr,$S($O(TOENr($O(TOENr(""))))="":"",1:"en")) Do:Modify'="A" . Set CorrWeken=$$PI^vhPOPUP("C;C","-O1","Leverweek "_$S(Modify="L":"lijn",1:"order"),"FLOWORD","SYNCTOE",1) . Quit:zb="CANC" . If Modify="O" Do . . Set OLNr="" . . For Set OLNr=$O(OLNr(OLNr)) Quit:OLNr="" Do SYNCLIJN(ORDNr,OLNr,CorrWeken) . Else Do SYNCLIJN(ORDNr,SyncOLNr,CorrWeken) . Do WL^PROC Quit ; ; Synchroniseren order of orderlijn aan de toelevering (dataverwerking) SYNCLIJN(ORDNr,OLNr,CorrWeken) New R,OrdRec,ToeRec,KLNr,LEVNr,TOENr,TLNr,ToeLevWk,OrdLevDag Set KLNr=$P(^KO1(ORDNr,"F"),D),OrdRec=^KOD(KLNr,"F",ORDNr,OLNr) Set TOENr=$P(OrdRec,D,27),TLNr=$P(OrdRec,D,28) If TOENr,TLNr Do . Set LEVNr=$P(^KTO1(TOENr),D),ToeRec=^KTO(LEVNr,TOENr,TLNr),ToeLevWk=$P(ToeRec,D,25) . Set OrdLevDag=$$GeefDefaultOrderLeverdag^FLOWTOE6(ORDNr,$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(ToeLevWk,"DW"),"W",CorrWeken),"DW")) . Quit:OrdLevDag=$P(OrdRec,D,25) ; niet gewijzigd . Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) . Set:$P(OrdRec,D,29)="" $P(OrdRec,D,29)=$P(OrdRec,D,25) . Set $P(OrdRec,D,25)=OrdLevDag,^KOD(KLNr,"F",ORDNr,OLNr)=OrdRec . Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) . Do ProductOrderLijnGewijzigd^FLOWORD2(KLNr,ORDNr,OLNr,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Leverdatum()) Quit ; ; Order onder rembours, afgehandeld en gewijzigd ChkRembours(ORDNr) New R,KLNr,Afgehandeld,OldTeBet,NewTeBet,KlNaam,Munt,DelOrd Set KLNr=$P($G(^KO1(ORDNr,"F")),D) Do:KLNr . Set R=$G(^KOD(KLNr,"F",ORDNr,1)),Afgehandeld=$P(R,D,37),OldTeBet=$P(Afgehandeld,"#",3) . Quit:'Afgehandeld ; Order reeds op bon of nog niet afgehandeld . Set R=$$CALCORD^FLOWORD5(ORDNr),NewTeBet=$P(R,D),Munt=$P(R,D,7) . Quit:OldTeBet=NewTeBet . Set DelOrd=$O(^KOD(KLNr,"F",ORDNr,100))="" . Set R=^KKL(^KK1(KLNr),0),KlNaam=$P(R,D,2) . For Do Quit:Afgehandeld'="T" . . Set:'DelOrd Afgehandeld=$$^vhTXTPOP("FLOWORD","CHKREMB","",KLNr,KlNaam,$$EXTNUM^vhLib.DataTypes(ORDNr,0,".T",0),$$EXTNUM^vhLib.DataTypes(OldTeBet,0,".",2),Munt,$$EXTNUM^vhLib.DataTypes(NewTeBet,0,".",2)) ; Order gewijzigd (aantal o prijs) . . Set:DelOrd Afgehandeld=$$^vhTXTPOP("FLOWORD","DELREMB","",KLNr,KlNaam,$$EXTNUM^vhLib.DataTypes(ORDNr,0,".T",0),$$EXTNUM^vhLib.DataTypes(OldTeBet,0,".",2),Munt) ; Alle lijnen zijn verwijderd . . Do:Afgehandeld="T" TELEFOON^KONTAKT("K",KLNr) . Set R=^KOD(KLNr,"F",ORDNr,1) . Set $P(R,D,37)=$S(Afgehandeld:$G(CUserId,$G(QU(1),$P($$DEVUSER^vhUSER(),";")))_"#"_$H_"#"_NewTeBet,1:"") . Set ^KOD(KLNr,"F",ORDNr,1)=R Quit ; ModifyAllLeverdagen(KLNr,ORDNr) New R,OLNr,ModifiedOL,PRNr,KortTekst,OldLeverdag,NewLeverdag,VroegsteLevering,VerzendWijze,LandCode,PostCode,RefDate,blVerzendWijze,blLeveringsTermijn,lbExtraBtns,Lines,Annuleer New Modified,AantalLijnen,TempOLNr Set VerzendWijze=$$DEFAULT^KLVERZW(,KLNr,ORDNr) Set LandCode=$$LAND^vhRtn1(KLNr,"K") Set PostCode=$P(^KKL(^KK1(KLNr),0),D,6) ; Referentiedatum voor DOM levertermijn Set RefDate=$P(^KOD(KLNr,"F",ORDNr,1),D,45),RefDate=$S($P(RefDate,"#",2):$P(RefDate,"#",2),1:RefDate) Set:RefDate<$H RefDate=$H Set blVerzendWijze=##class(APPS.VKP.VerzendWijze).%New(KLNr,VerzendWijze,LandCode,PostCode,ORDNr) Set blLeveringsTermijn=##class(APPS.VKP.LeveringsTermijn).%New(RefDate,blVerzendWijze) 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),OldLeverdag=$P(R,D,25),VroegsteLevering=$$GetLeverdag^FLOW3(KLNr,PRNr,RefDate,1) . Set ModifiedOL("O",OLNr)=PRNr_D_OldLeverdag_D_VroegsteLevering . Set:OldLeverdag ModifiedOL("L",OldLeverdag,VroegsteLevering)=$G(ModifiedOL("L",OldLeverdag,VroegsteLevering))+1 Set OLNr=100 For Set OLNr=$O(ModifiedOL("O",OLNr)) Quit:OLNr="" Do Quit:$G(Annuleer) . Set R=ModifiedOL("O",OLNr),PRNr=$P(R,D),OldLeverdag=$P(R,D,2),VroegsteLevering=$P(R,D,3),Modified=$P(R,D,4) . Quit:$L(Modified) . Set KortTekst=$P($G(^KPR(PRNr,0)),D),AantalLijnen=0 . Set:OldLeverdag AantalLijnen=ModifiedOL("L",OldLeverdag,VroegsteLevering) . Set NewLeverdag=$$GetLeverdag^FLOW3(KLNr,,VroegsteLevering,,$$GetLeverdagen^FLOWORD5(KLNr,ORDNr),KortTekst_" ("_AantalLijnen_")") . Do:NewLeverdag="?" . . New Leverdag . . Set Leverdag=$$EXTDATE^vhLib.DataTypes(VroegsteLevering) . . Do STORE^vhTERMINA() . . For Do Quit:%TC . . . Set FP=2001 Write @F,@F2,"Product : ",KortTekst_" ("_AantalLijnen_")" . . . Set NewLeverdag=$$ASKL^vhINP("FLOWORD","Leverdag") . . . Do VALDATE^vhLib.DataTypes(NewLeverdag,"DK",$H) . . . Do:NewLeverdag . . . . If '$$ISARBDAG^vhRtn2(%INT),'$$^vhTXTPOP("FLOW","NOARBDAG","",%EXT) Set %TC=0 . . . . Else If ##class(DOM.CRM.impl.KlantVerlofPeriode).IsVerlofDag(KLNr,%INT),'$$^vhTXTPOP("FLOW","KLVERLOF","",%EXT,$P(^KKL(^KK1(KLNr),0),D,2)) Set %TC=0 . . . . Else Set NewLeverdag=%INT . . Do REFRESH^vhTERMINA() . Set NewLeverdag=$S(NewLeverdag="Asap":$P(ModifiedOL("O",OLNr),D,3),'NewLeverdag:0,1:NewLeverdag) . If NewLeverdag Set Lines=$$^vhTXTPOP("FLOWORD","MODALLLINES","",KortTekst_" ("_AantalLijnen_")",$$EXTDATE^vhLib.DataTypes(OldLeverdag),$$EXTDATE^vhLib.DataTypes(NewLeverdag)) . Set Annuleer=$G(Lines)=0 . Quit:Annuleer . If $G(Lines)="D" Do . . Set $P(ModifiedOL("O",OLNr),D,4)=NewLeverdag . . Set:$D(ModifiedOL("L",OldLeverdag,VroegsteLevering)) ModifiedOL("L",OldLeverdag,VroegsteLevering)=ModifiedOL("L",OldLeverdag,VroegsteLevering)-1 . Else Do . . Set TempOLNr=100 . . For Set TempOLNr=$O(ModifiedOL("O",TempOLNr)) Quit:TempOLNr="" Do . . . Set R=ModifiedOL("O",TempOLNr) . . . Quit:$P(R,D,2,3)'=(OldLeverdag_D_VroegsteLevering) . . . Quit:$L($P(ModifiedOL("O",TempOLNr),D,4)) . . . Set $P(ModifiedOL("O",TempOLNr),D,4)=NewLeverdag ; Wijzigen van alle lijnen Do:'$G(Annuleer) . Set OLNr=100 . For Set OLNr=$O(ModifiedOL("O",OLNr)) Quit:OLNr="" Do . . Set R=ModifiedOL("O",OLNr),OldLeverdag=$P(R,D,2),NewLeverdag=$P(R,D,4) . . Quit:'NewLeverdag . . Quit:NewLeverdag=OldLeverdag . . Do Ingave^Flow.Order.WijzigOrderlijn(OLNr,"L",NewLeverdag) . . Do LRECALC^FLOWORD(KLNr,ORDNr,OLNr,2) . Set RefDate=$P(^KOD(KLNr,"F",ORDNr,1),D,45),RefDate=$P(RefDate,"#")_"#"_$H,$P(^KOD(KLNr,"F",ORDNr,1),D,45)=RefDate . Do WL^PROC Quit ; ; Controle of de ingevulde refdate nog niet verouderd is IsOldRefDate(KLNr,ORDNr) #define AantalUrenForRefDate 2 New RefDate Set RefDate=$P($P(^KOD(KLNr,"F",ORDNr,1),D,45),"#",2) Set:RefDate="" RefDate=$P($P(^KOD(KLNr,"F",ORDNr,1),D,45),"#",1) Quit:RefDate="" 1 ; nog niet ingesteld Quit $$DIFFTIME^vhLib.DataTypes(RefDate,$H)>($$$AantalUrenForRefDate*3600) ; 2 uur ;------------------------------------------------------------------------------------------------------------------ WijzigLeverDataLijnPerLijn(KLNr,ORDNr,MetUI) Do WijzigLeverData(KLNr,ORDNr,MetUI) Quit WijzigLeverData(KLNr,ORDNr,MetUI,lbGewensteLijnen,lbModifiedOL) New blVerzendWijze,blLeveringsTermijn Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) // do init blVerzendwijze,blLeveringsTermijn New RefDate Set RefDate=$$GetRefDate^FLOWORD2(KLNr,ORDNr) Set MetUI=$G(MetUI) Set lbModifiedOL=$$GetLeverDataLijnPerLijn(KLNr,ORDNr,$G(lbGewensteLijnen)) Quit:(lbModifiedOL="")||('$LL(lbModifiedOL)) Do:MetUI ModifyDataWithUI(KLNr,ORDNr,lbModifiedOL) Do:'(MetUI) ModifyData(KLNr,ORDNr,lbModifiedOL) Do ModifyRefDate(KLNr,ORDNr,RefDate) Quit ;----------------------------------------------------------------------------------------------- ASAP(KLNr,ORDNr) New lbModifiedOL , ListInfo , Index New blVerzendWijze,blLeveringsTermijn Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) // do init blVerzendwijze,blLeveringsTermijn Set MetUI=$G(MetUI) Set lbModifiedOL=$$GetUsedLeverData(KLNr,ORDNr) // $LB($LB(OLNr,HuidigeLeverdag,VroegstMogelijkeLeverdag)) For Index=1:1:$LL(lbModifiedOL) Do . Set ListInfo = $LI(lbModifiedOL,Index) . Set $LI(ListInfo,2) = $LI(ListInfo,3) // asap toekennen . Set $LI(lbModifiedOL,Index) = ListInfo Do ModifyData(KLNr,ORDNr,lbModifiedOL) Quit ;------------------------------------------------------------------------------------------------------------------ ; Wijzigen van de leveringsdata van alle orderlijnen met de mogelijkheid om in groep aan te passen. ; Return is een lijst met alle gewijzigde lijnen en hun nieuwe leveringsdatum GetLeverDataLijnPerLijn(KLNr,ORDNr,lbGewensteLijnen) New lbModifiedOL,Stop,ItemIndex,LijnNr New lbGebruikteLeverdagen Set lbModifiedOL="" If $LL(lbGewensteLijnen) For ItemIndex=1:1:$LL(lbGewensteLijnen) Do . Set LijnNr = $LG(lbGewensteLijnen,ItemIndex) . Set lbGebruikteLeverdagen = $G(lbGebruikteLeverdagen) _ $LB($$GetUsedLeverDataLijn(KLNr,ORDNr,LijnNr)) Else Set lbGebruikteLeverdagen=$$GetUsedLeverData(KLNr,ORDNr) ; $LB($LB(OLNr,LeverData),...) For Set Stop=$$GetLeverDataGroep(KLNr,ORDNr,lbGebruikteLeverdagen,.lbModifiedOL) Quit:Stop Quit:Stop=1 lbModifiedOL ; niet gestopt door user dus wijzigen alle orderlijnen Quit "" ;------------------------------------------------------------------------------------------------------------------ GetLeverDataGroep(KLNr,ORDNr,lbGebruikteLeverdagen,lbModifiedOL) New NieuweLeverdag,lbLinesStillToDo,lbLinesToChange,VroegstMogelijkeLeverdag New PRNr,Input,amLinesToChange,HuidigeDatum,Titel,lbAnswer,Index New OLNr,lbFirstItem ; lbModifiedOL via .Local oproepen Set lbLinesStillToDo = $$LinesStillToDo(lbGebruikteLeverdagen,lbModifiedOL) Quit:lbLinesStillToDo="" 1 ; Stop --> alle lijnen reeds gewijzigd Set lbFirstItem = $LI(lbLinesStillToDo,1) Set lbLinesToChange = $$GetZelfdeLeverdagen(lbLinesStillToDo,lbFirstItem) Set PRNr = $$GetPRNr(KLNr,ORDNr,lbFirstItem) Set amLinesToChange = $LL(lbLinesToChange) Set VroegstMogelijkeLeverdag=$LI(lbFirstItem,3) Set HuidigeDatum = $LI(lbFirstItem,2) Set Titel = $S($L(PRNr):$$$PRGet($$$KortTekst),1:"")_" ( "_ $$EXTDATE^vhLib.DataTypes(HuidigeDatum) _" #"_amLinesToChange _")" Set lbAnswer = $$VraagLeverDag(KLNr,ORDNr,VroegstMogelijkeLeverdag,lbGebruikteLeverdagen,lbModifiedOL,Titel) Set Input = $LI(lbAnswer,1) Quit:Input="-" -1 ; --> gebruiker annuleert ingave Set NieuweLeverdag = $LI(lbAnswer,2) If Input="+" Do ; Alle same leverdata aanpassen . For Index=1:1:$LL(lbLinesToChange) Do . . Set OLNr=$LI($LI(lbLinesToChange,Index)) . . Do AppendLeverdag(.lbModifiedOL,OLNr,NieuweLeverdag) . . Do ReplaceLeverdag(.lbGebruikteLeverdagen,OLNr,NieuweLeverdag) /*Else If Input="A" Do ; Alle leverdata aanpassen -- functie A wijzigen alle lijnen momenteel buiten gebruik tot nader order.. . For Index=1:1:$LL(lbGebruikteLeverdagen) Do . . Set OLNr=$LI($LI(lbGebruikteLeverdagen,Index)) . . Do AppendLeverdag(.lbModifiedOL,OLNr,NieuweLeverdag) . . Do ReplaceLeverdag(.lbGebruikteLeverdagen,OLNr,NieuweLeverdag) */ Else If Input="ENTER" Do ; alleen de eerste lijn . Set OLNr=$LI($LI(lbLinesToChange,1)) . Do AppendLeverdag(.lbModifiedOL,OLNr,NieuweLeverdag) . Do ReplaceLeverdag(.lbGebruikteLeverdagen,OLNr,NieuweLeverdag) Quit 0 VraagLeverDag(KLNr,ORDNr,VroegsteLevering,lbHuidigeItems,lbNieuweItems,Titel) New zb,lbDatums,LeverDatum,LeverDatums,lbBtnAndere,lbExtraBtns,DatumBevestigd New arDatums,arSelected,Index,ORef,domVerlof,Verlof New ListItem,Andere Set lbExtraBtns=$G(lbExtraBtns) Set lbDatums=blLeveringsTermijn.GetLeverDatums(VroegsteLevering,3) For Index=1:1:$LL(lbDatums) Set arDatums($LI(lbDatums,Index))="" Set lbHuidigeItems = $$GetUsedLeverData(KLNr,ORDNr) For Index=1:1:$LL(lbHuidigeItems) Do . Set ListItem = $LI(lbHuidigeItems,Index) . Set arSelected($LI(ListItem,2))="" For Index=1:1:$LL(lbNieuweItems) Do . Set ListItem = $LI(lbNieuweItems,Index) . Set arSelected($LI(ListItem,2))="" Set lbBtnAndere = $LB("?","Andere") Set lbExtraBtns=$LB(lbBtnAndere) Set ORef=##class(Derde.Klant.Klant).%OpenId(KLNr) Set domVerlof=##class(DOM.CRM.impl.KlantVerlofPeriode).%New(ORef) Do domVerlof.Fetch(.Verlof) Do MergeDatums(.arDatums,.arSelected,.LeverDatums,.lbExtraBtns,.Verlof) Set Titel=$G(Titel,$$SHOW^KLVERZW(,,,blVerzendWijze.VerzendWijze)) New LastKey Set LastKey="ENTER" Set CallBack("S")="F`CBSelect^FLOWORD4" Set CallBack("K")="X`D CBKeyPress^FLOWORD4" Do STORE^vhTERMINA() For Do If 'Andere Quit:(LastKey="-") Quit:(DatumBevestigd) Quit:($$DatumBevestigd(LeverDatum,ORDNr)) . Set Andere = 0 // wordt gebruikt indien gebruiker andere kiest in POPUP .. . Set DatumBevestigd = 0 . Do MergeDatums(.arDatums,.arSelected,.LeverDatums,.lbExtraBtns,.Verlof) . Set LeverDatum=$$WILD^vhPOPUP("C;C","-1Ob",Titel,.LeverDatums,VroegsteLevering,.CallBack,1) . If LeverDatum="?" Do // gebruiker wenst andere datum op te geven . . Set Andere = 1 . . New ValidDate,%INT,%EXT . . For Do Quit:ValidDate . . . Set LeverDatum="" . . . Set LeverDatum=$$ASKL^vhINP("FLOWORD","LEVERDAG") . . . Set ValidDate=1 . . . Quit:LeverDatum="-" Do VALDATE^vhLib.DataTypes(LeverDatum,"DK",$H) Set ValidDate=%TC Quit:'(ValidDate) . . . Set LeverDatum = %INT . . . If '$$DatumBevestigd(LeverDatum,ORDNr) Set ValidDate=0,LeverDatum = "?" . . . Else Set DatumBevestigd=1 . . If LeverDatum ?1.6N Set lbBtnAndere = $LB(LeverDatum,"Andere : "_"w-"_$P($$EXTDATE^vhLib.DataTypes(%INT,"DW"),"/",2)_" "_$$EXTDATE^vhLib.DataTypes(%INT,"DCK")_" "_$$EXTDATE^vhLib.DataTypes(%INT)) . . Else Set lbBtnAndere = $LB("?","Andere") . . Set lbExtraBtns=$LB(lbBtnAndere) Do REFRESH^vhTERMINA() Quit $LB(LastKey,LeverDatum) CBSelect(Select,Old,New,Rec) Quit $E($P(Rec,"`",3))'="V" //Quit $P(Rec,"`",3)'="I" CBKeyPress Set LastKey=sActie If (LastKey="+")||(LastKey="A") Set sActie="ENTER" If sActie="-" Set zb="CANC" Else Set zb="" Quit ; Alle leverdatums in een tabel gieten MergeDatums(Datums,Selected,arLeverDatums,lbExtraBtns,Verlof) New I,R,Datum,Status,Count,VerlofVan,VerlofTot Set lbExtraBtns=$G(lbExtraBtns) Set Datum="" For Set Datum=$O(Datums(Datum)) Quit:Datum="" If $D(Selected(Datum)) Set Datums(Datum)="U" Kill Selected(Datum) Set Datum="" For Set Datum=$O(Selected(Datum)) Quit:Datum="" If '$D(Datums(Datum)),$O(Datums(Datum),-1)="" Set Selected(Datum)="I" For Count=1:1 Set R=$G(Verlof(Count)) Quit:R="" Do . Set VerlofVan=$P(R,D,2),VerlofTot=$P(R,D,3) . If $O(Datums(""))>VerlofTot Quit . If $O(Datums(""),-1)VroegsteLeverDag) . . If 'MagazijnBeschikbaar,'LeveringVoorLater,VroegsteLeverDag'>$$CALCDATE^vhLib.DataTypes(,"A",1) Do . . . Set LeverDagen("NOK",LeverDag)=$G(LeverDagen("NOK",LeverDag))+1 . . Else Set LeverDagen("OK",LeverDag)=$G(LeverDagen("OK",LeverDag))+1 . . If $D(LeverDagen("NOK")) Do . . Set LeverDag="" . . For Set LeverDag=$O(LeverDagen("OK",LeverDag)) Quit:LeverDag="" Set LeverDagen(LeverDag)=$G(LeverDagen(LeverDag))+LeverDagen("OK",LeverDag) . . For Set LeverDag=$O(LeverDagen("NOK",LeverDag)) Quit:LeverDag="" Set LeverDagen(LeverDag)=$G(LeverDagen(LeverDag))+LeverDagen("NOK",LeverDag) . . Kill LeverDagen("OK"),LeverDagen("NOK") . . Set LeverDag="" . . For Set LeverDag=$O(LeverDagen(LeverDag)) Quit:LeverDag="" Do . . . Set LeverDagen(LeverDag)=" "_$$EXTDATE^vhLib.DataTypes(LeverDag)_$S(LeverDag>$$CALCDATE^vhLib.DataTypes(,"A",2):$J("",12),1:" -> "_$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes(,"A",2)))_" |"_$J(LeverDagen(LeverDag),5) . . . Set LeverDagen(1)="ŠiŠU Leverdag | Lijnen ŠIŠu" . . Set Buttons(1)="Ingave $behouden&B" ; Zoals ingegeven . . Set:$O(LeverDagen(""),-1)>$$CALCDATE^vhLib.DataTypes(,"A",2) Buttons(2)="Alles $op "_$$EXTDATE^vhLib.DataTypes($O(LeverDagen(""),-1))_"&"_$O(LeverDagen(""),-1) ; Alle lijnen op de verste dag . . Set Buttons=$O(Buttons(""),-1),DefLeverdag=$O(LeverDagen(""),-1) Set:DefLeverdag<$$CALCDATE^vhLib.DataTypes(,"A",2) DefLeverdag=$$CALCDATE^vhLib.DataTypes(,"A",2) . . Set lbDatums=blLeveringsTermijn.GetLeverDatums(DefLeverdag,1) . . For I=1:1:$LL(lbDatums) Set Buttons=Buttons+1,Buttons(Buttons)="Verplaatsen naar "_$$EXTDATE^vhLib.DataTypes($LI(lbDatums,I))_"&"_$LI(lbDatums,I) . . Set BLater=Buttons+1,Buttons(BLater)="Later "_"&L" ; alle lijnen op een dag voorbij de verste dag . . Set LeverDagen="LeverDagen",Buttons="Buttons" . . For Set TxtPop=$$WILD^vhTXTPOP("C;C","Stop op automatisch doorsturen",.LeverDagen,.Buttons) Do:TxtPop="L" Quit:TxtPop="B" Quit:TxtPop="ASAP" Quit:TxtPop . . . Set Buttons(BLater)="Later "_"&L*" . . . Set lbLeverdagen=$$GetLeverDagen^FLOWORD5(KLNr,ORDNr) . . . Set DefLeverdag=$O(LeverDagen(""),-1) . . . Set TxtPop=$$GetLeverDag^FLOW3(KLNr,,DefLeverdag,,lbLeverdagen,"",,,1) . . Do:TxtPop'="B" ModifyLeverDagenOnCloseOrderAndD2(ORDNr,TxtPop,"MAGAZIJN") Quit ; Invullen nieuwe leverdag in alle lijnen bij close prder en D+2 ModifyLeverDagenOnCloseOrderAndD2(ORDNr,Input,LCORRTekst) New OrdRec,KLNr,OLNr,PRNr,LeverDag,NieuweLeverDag,lbLeverdagen Set KLNr=$P(^KO1(ORDNr,"F"),D) Set OLNr=99 For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do . Set OrdRec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(OrdRec,D,2),LeverDag=$P(OrdRec,D,25) . Quit:'PRNr ; Geen product . Quit:'LeverDag ; Leverdag niet ingevuld . Set NieuweLeverDag=Input . If Input="ASAP" Set NieuweLeverDag=$$GetLeverDagOrder^FLOW3(KLNr,ORDNr,PRNr,,1) . Quit:LeverDag=NieuweLeverDag . Do KWNODE^FLOWORD(KLNr,ORDNr,OLNr) . Set $P(OrdRec,D,25)=NieuweLeverDag . Set:$L($G(LCORRTekst)) $P(OrdRec,D,50)=LCORRTekst . Set ^KOD(KLNr,"F",ORDNr,OLNr)=OrdRec . Do SWNODE^FLOWORD(KLNr,ORDNr,OLNr) . Do ProductOrderLijnGewijzigd^FLOWORD2(KLNr,ORDNr,OLNr,##class(DOM.VKP.enu.ProductOrderLijnWijzigingType).Leverdatum()) Quit