EWORDS5 ;E'WMS Markeren voor orderpicking #Include BL.Derde.Kennis #Include BL.Derde.KlantSpecifiek #Include vhLib.Macro ; CHKMARK(Ref) New R,PRNr,ORDNr,OLNr,Mark,Aantal,FysStock,TOENr,OLUNr,ResWMS Set R=^HULP(%J,KLNr,"O",Ref),ORDNr=$P(R,D),OLNr=$P(R,D,11) Set PRNr=$P(R,D,12),Aantal=$P(R,D,13),FysStock=$P(R,D,14),TOENr=$P(R,D,17),OLUNr=$P(R,D,19),Mark=0 Set ResWMS=$$RESWMS^EWORDS(%J,KLNr,PRNr) Set FysStock=FysStock+$P(^KPR(PRNr,0),D,9)-ResWMS If Aantal<0 Set Mark=1 If Aantal'>FysStock,'TOENr Set Mark=1 Quit Mark ; ; MarkOrd indien markering volledig order MARKLINE(Ref,MarkOrd,Unmark,IsNodigControleerOrderBezwaren = 1,GaVerder = 1,LijnLeverdatumControleren=1) New R,ORDNr,OLNr,Aantal,OLUNr,PRNr,FysStock,ResWMS,PraStock,StockUpd,FirstMark,AskLink New DynTheoS,VerzW,LevWk,KlOLNr,InGroep,TOENr Set MarkOrd=$G(MarkOrd),Unmark=$G(Unmark),R=^HULP(%J,KLNr,"O",Ref),ORDNr=$P(R,D),OLNr=$P(R,D,11) Set FirstMark='$D(^HULP(%J,KLNr,"M","A")) Set FirstMarkOrder='$D(^HULP(%J,KLNr,"M","A",ORDNr)) If FirstMark || ($G(StockUpdate) = "") { set StockUpdate = ##class(DOM.MAG.enu.StockUpdate).Onbepaald() } If 'Unmark,FirstMark Do ShowKennisAnker(KLNr,,1) If 'Unmark,FirstMarkOrder,'MarkOrd,$$CHKLINK(ORDNr) Set AskLink=$$ASKLINK(ORDNr) If AskLink'=ORDNr Do:AskLink'="A" SERIE("LINK",ORDNr,"L") Quit If $G(OrderStaatVolledigBijVanHoeckeArray) = "" { Set OrderStaatVolledigBijVanHoeckeArray = ##class(%ArrayOfDataTypes).%New() } If $$$Not(Unmark){ if IsNodigControleerOrderBezwaren { Set GaVerder = $$GaVerderIndienBezwarenOrderDoorsturen(ORDNr) } Set LijnLeverdatumControleren = $g(^HULP(%J,KLNr,ORDNr,"DatumControleren"),1) ; Alleen controleren bij eerste lijn van order Set:(GaVerder & LijnLeverdatumControleren) GaVerder = $$GaVerderIndienBezwarenOrderLijnDoorsturen(ORDNr,OLNr,.LijnLeverdatumControleren) Set ^HULP(%J,KLNr,ORDNr,"DatumControleren") = LijnLeverdatumControleren } Quit:($$$Not(GaVerder)) Set:(GaVerder=2) $p(^HULP(%J,KLNr,"V"),"\",2) = +$$GetPickDatum^EWORDS6(ORDNr,OLNr) ; wordt overgenomen in MODVERZW^EWORDS Set PRNr=$P(R,D,12),Aantal=$P(R,D,13) Set FysStock=$P(R,D,14),PraStock=$P(R,D,15),DynTheoS=$P(R,D,16) Set OLUNr=$P(R,D,19),LevWk=$P(R,D,18),TOENr=$P(R,D,17),KlOLNr=$P(R,D,35) Set StockUpd=$P(R,D,22)'["S" Set:StockUpd StockUpd=$P(R,D,22)'["Z" Set ResWMS=$$RESWMS^EWORDS(%J,KLNr,PRNr) Set FysStock=FysStock+$P(^KPR(PRNr,0),D,9)-ResWMS+$P($G(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)),D) ; Het aantal van de gemarkeerde lijn er terug bij tellen om dat deze reeds in ResWMS zit EN dit aantal moet terug vrijkomen voor wijziging ;Set PraStock=PraStock+$P(^KPR(PRNr,0),D,9)-ResWMS ;+Aantal If Unmark Do . If $P(KlOLNr,".",2) Do .. Quit:'$D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) .. Set InGroep=$$INGROEP(ORDNr,KlOLNr) .. Quit:'InGroep .. Do MARKGRP(Ref,1) . Kill ^HULP(%J,KLNr,"M","A",ORDNr,OLUNr) . Kill:'$D(^HULP(%J,KLNr,"M","A")) ^HULP(%J,KLNr,"C") Else Do . Quit:MarkOrd>1 ; Markeren in background . Do:MarkOrd MOVE^vhLIST(.LD,"DO","") . Quit:TOENr Quit:LevWk="WMS" . If 'OrderStaatVolledigBijVanHoeckeArray.IsDefined(ORDNr) Do OrderStaatVolledigBijVanHoeckeArray.SetAt(##class(BL.Legacy.EWTOE).OrderStaatVolledigBijVanHoecke(ORDNr), ORDNr) . If 'OrderStaatVolledigBijVanHoeckeArray.GetAt(ORDNr) Do Quit . . Do Boodschap^vhTXTPOP("Enkele goederen van dit order zijn nog niet aanwezig in het Van Hoecke magazijn. Doorsturen nog niet mogelijk.") . If StockUpd Quit:$$PLUSMIN(Aantal,.StockUpdate) . If StockUpd,Aantal>0,FysStock'>0 Quit . If 'MarkOrd,'$$MagazijnBeschikbaar^EWORDS6(ORDNr,0) Quit:'$$^vhTXTPOP("EWORDS","MAGAZIJNNIETBESCHIKBAAR") . If '$D(^HULP(%J,KLNr,"M")) Do .. Do STORE^vhTERMINA() .. If '$G(Hulp(KLNr,"SKIP")) Set R=$$WAARDIG^KREDIET(KLNr,,1,,,.Hulp),Hulp(KLNr,"SKIP")=1 .. Do REFRESH^vhTERMINA() . If OLUNr'<10000 Set R=$$^vhTXTPOP("PVCW","WARNING","","Order "_ORDNr,"OLUNr="_OLUNr) Quit . Quit:'$$MIXMAN(KLNr,PRNr) . If $P(KlOLNr,".",2) Quit:'$$CUMORD^EWORDS3(.Ref) Do Quit:InGroep .. Set InGroep=$$INGROEP(ORDNr,KlOLNr) .. Quit:'InGroep .. Set InGroep=$$CHKGRP(Ref) .. Quit:'InGroep .. Do MARKGRP(Ref) . If PraStock<0,StockUpd Do .. Do MODAANT^EWORDS(Ref,0) . Else If Aantal>0,Aantal' 0 { Set BezwarenBericht = "" For BezwarenCnt=1:1:Bezwaren.Count() Set BezwarenBericht = BezwarenBericht _ Bezwaren.GetAt(BezwarenCnt)_$C(13,10) Set GaVerder = $$JaNee^vhTXTPOP("Bezwaren",BezwarenBericht) } Quit GaVerder GaVerderIndienBezwarenOrderLijnDoorsturen(OrderID, OrderLijnID,LijnLeverdatumControleren=1) New DoorsturenOrderPickingService,Bezwaren,BezwarenBericht,GaVerder #dim GaVerder As %Boolean = 1 Set DoorsturenOrderPickingService = ##class(APPS.OrderUitvoering.DoorsturenOrderPickingService).%New() #dim Bezwaren As %ArrayOfDataTypes = DoorsturenOrderPickingService.GeefBezwarenTegenOrderLijnDoorsturen(OrderID, OrderLijnID) If Bezwaren.Count() > 0 { Set BezwarenBericht = "" For BezwarenCnt=1:1:Bezwaren.Count() Set BezwarenBericht = BezwarenBericht _ Bezwaren.GetAt(BezwarenCnt)_$C(13,10) Set GaVerder = $$^vhTXTPOP("EWORDS","DUEOUTVRD",0,$ZDT(+$$GetPickDatum^EWORDS6(OrderID,$G(OrderLijnID)),4),$ZDT(+$Piece(^HULP(%J,"V","V"),"\",2),4)) Set LijnLeverdatumControleren = $$$Not(GaVerder) ; Als er verdergegaan word, volgende keer niet meer vragen } Quit GaVerder ; kan nu 3 waarden bevatten Wijzigen = 1 , Behouden = 2 Annuleren = 0 MARKORD(Ref) New R,ORDNr,OLNr,Quit,Marked,OLUNr,StartRef,VerzW,AskLink New OrderStaatVolledigBijVanHoeckeArray New IsNodigControleerOrderBezwaren, GaVerder, IsOrderVolledigGemarkeerd, LijnLeverdatumControleren Set OrderStaatVolledigBijVanHoeckeArray = ##class(%ArrayOfDataTypes).%New() Set StartRef = Ref Set R = ^HULP(%J,KLNr,"O",Ref) Set ORDNr = $Piece(R,D) Set Marked = ''$Data(^HULP(%J,KLNr,"M","A",ORDNr)) If 'Marked,'$$MagazijnBeschikbaar^EWORDS6(ORDNr,0) Quit:'$$^vhTXTPOP("EWORDS","MAGAZIJNNIETBESCHIKBAAR") Set R = ^KOD(KLNr, "F", ORDNr, 1) Set VerzW = $Piece($$DEFAULT^KLVERZW(, KLNr, ORDNr), ";") If '$D(^HULP(%J,KLNr,"M")),VerzW'=$P($G(^HULP(%J,KLNr,"V")),D) Do MODVERZW^EWORDS(VerzW) #dim IsOrderVolledigGemarkeerd As %Boolean = $$$True #dim IsNodigControleerOrderBezwaren As %Boolean = $$$True #dim GaVerder As %Boolean = $$$True If $$CUMORD^EWORDS3(.Ref) Do . If 'Marked,$$CHKLINK(ORDNr) Set AskLink=$$ASKLINK(ORDNr) If AskLink'=ORDNr Do:AskLink'="A" SERIE("LINK",ORDNr,"L") Quit . Set LijnLeverdatumControleren = 1 . For Set Ref=$O(^HULP(%J,KLNr,"O",Ref)) Quit:Ref="" Do Quit:Quit . . Quit:$$$Not(GaVerder) . . Set R = ^HULP(%J, KLNr, "O", Ref) . . Set Quit = $$$Not(ORDNr = $Piece(R, D)) . . Set OLNr = $Piece(R, D, 11) . . Set OLUNr = $Piece(R, D, 19) . . Quit:Quit . . If Marked!('Marked&'$D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr))) Do . . . Do MARKLINE(.Ref,1+Marked,Marked,IsNodigControleerOrderBezwaren,.GaVerder,.LijnLeverdatumControleren) . . . Set IsNodigControleerOrderBezwaren = 0 . . Else Do LINE^vhLIST(.LD,LD("SELECT")) Do MOVE^vhLIST(.LD,"DO","") . Do:Marked LINE^vhLIST(.LD,LD("SELECT")) Do MOVE^vhLIST(.LD,"DO","") . If LD("SELECT")=LD("MAX") Set LD("SELECT")=StartRef Do LINE^vhLIST(.LD,LD("SELECT")) Quit ; ; Een reeks van orders in een keer maar afzonderlijk verwerken SERIE(Type,ORDNr,Optie) New I,R,TempOrd,OLNr,PRNr,Aantal,OLUNr,LevWk,VNode,LinkORDNr,TOENr If Type="OL" Do ; Orgalux . Do MODVERZW^EWORDS() . Quit:$$^vhTXTPOP("EWORDS","SERIE","",$P(^KKL(^KK1(KLNr),0),D,2))'="V" . Set TempOrd="" . For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Set R=^HULP(%J,KLNr,"O",I),ORDNr=$P(R,D),ORDNr(ORDNr)="" . Set ORDNr="" . For Set ORDNr=$O(ORDNr(ORDNr)) Quit:ORDNr="" Do . . If ORDNr'=TempOrd,$$CHKSERIE(ORDNr,"OL") Do . . . Kill ^HULP(%J,KLNr,"M","A") . . . Set VNode=$G(^HULP(%J,KLNr,"V")),OLNr=100 . . . For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do If TOENr Kill ^HULP(%J,KLNr,"M","A",ORDNr) Quit . . . . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),OLUNr=$P(R,D,15),LevWk=$P(R,D,25),TOENr=$P(R,D,27) . . . . If PRNr,OLUNr,'TOENr Set R=Aantal_D_D_LevWk,^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)=R . . . Do LEVADR^EWORDS3 ; Leveringsadres opzetten . . . Set R=$$SAVE^EWORDS(1) . . . Do UNLOCK^EWORDS,CLEAN^EWORDS . . . Do FETCH^EWORDS(KLNr,,Optie),INIT^vhLIST("EWORDS","LIJST",.LD) . . . Set:$L(VNode) ^HULP(%J,KLNr,"V")=VNode . . . Do WRITE^vhLIST(.LD) . . Set TempOrd=ORDNr . . Kill ^HULP(%J,KLNr,"M","A") Else If Type="LINK" Do ; Gelinkte orders . Set TempOrd="",LinkORDNr=ORDNr . For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Set R=^HULP(%J,KLNr,"O",I),ORDNr=$P(R,D),ORDNr(ORDNr)="" . Set ORDNr="" . For Set ORDNr=$O(ORDNr(ORDNr)) Quit:ORDNr="" Do . . If ORDNr'=LinkORDNr Quit:'$$CHKLINK(LinkORDNr,ORDNr) . . If ORDNr'=TempOrd,$$CHKSERIE(ORDNr,"LINK") Do . . . Kill ^HULP(%J,KLNr,"M","A") . . . Set VNode=$G(^HULP(%J,KLNr,"V")),OLNr=100 . . . For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do If TOENr Kill ^HULP(%J,KLNr,"M","A",ORDNr) Quit . . . . Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),OLUNr=$P(R,D,15),LevWk=$P(R,D,25),TOENr=$P(R,D,27) . . . . If PRNr,OLUNr,'TOENr Set R=Aantal_D_D_LevWk,^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)=R . . . Do LEVADR^EWORDS3 ; Leveringsadres opzetten . . . Set R=$$SAVE^EWORDS(1) . . . Do UNLOCK^EWORDS,CLEAN^EWORDS . . . Do FETCH^EWORDS(KLNr,,Optie),INIT^vhLIST("EWORDS","LIJST",.LD) . . . Set:$L(VNode) ^HULP(%J,KLNr,"V")=VNode . . . Do WRITE^vhLIST(.LD) . . Set TempOrd=ORDNr . . Kill ^HULP(%J,KLNr,"M","A") Quit ; CHKCUST(%J,KLNr) New D,Ok,Kriteria Set D="\",Ok=0 If $D(^KOD(KLNr,"F")) Do . Merge Kriteria=^HULP(%J,"S","K") . Set Kriteria="",Ok=1 . For Set Kriteria=$O(Kriteria(Kriteria)) Quit:Kriteria="" Do Quit:Ok . . Set R=Kriteria(Kriteria) . . Quit:R="" . . Xecute "Set Ok=$$CHK"_Kriteria_"(KLNr,R)" Quit Ok ; CHKTOER(KLNr,Value) Quit 1 New Ok,VerwW Set Value=$P(^RES("EWORDS","PI","TOER","D",Value),"`",3) Set Ok="`"_$$POSTKODE^KLVERZW(,KLNr)_"`"[("`"_Value_"`") Quit Ok ; CHKORD(%J,KLNr,ORDNr,Optie) New R,D,Ok,OLNr,Rec,PRNr,OLUNr,OneOrd,Kriteria,Aantal,TOENr,FysStock,EwmsVerw,StockUpd New blVerzendWijze,blLeveringsTermijn,RefDate,GewenstePickDatum Set ORDNr=$G(ORDNr),Optie=$G(Optie) Merge:Optie'["F" Kriteria=^HULP(%J,"S","O") Set D="\",(Ok,OneOrd)=0 If ORDNr Set ORDNr=$O(^KOD(KLNr,"F",ORDNr),-1),OneOrd=1 Else Set ORDNr="" For Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Do Quit:OneOrd . Set Rec=^KOD(KLNr,"F",ORDNr,1) . Quit:'$P(Rec,D,22) ; Order niet gesloten . Quit:( $L($G(Kriteria("MAGAZIJN"))) )&&( '$$ControleMagazijn(ORDNr,Kriteria("MAGAZIJN")) ) . Set RefDate=$H . If DOutSend="L" Set $P(RefDate,",",2)=22*3600 . Do INITDOMVKP^FLOWORD2(KLNr,ORDNr,RefDate) . If 'OneOrd,$E($$DEFAULT^KLVERZW(,,ORDNr),1,3)="DI1",$$ISTERUGN^FLOWORD5(ORDNr) Quit ; Niet indien een terugname via DI1 (SP) . Quit:'$$CHKOTYP(KLNr,ORDNr,$G(Kriteria("OTYP"))) . If 'Ok,$G(Kriteria("VERH")) Quit:'$$CHKVERH(KLNr,ORDNr,Kriteria("VERH")) . If 'Ok,$L($G(Kriteria("VERZ"))) Quit:'$$CHKVERZ(KLNr,ORDNr,Kriteria("VERZ")) . Set OLNr=100 . If 'Ok For Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Do Quit:Ok .. Set Ok=$$CHKLINE(KLNr,ORDNr,OLNr,.Optie) . Set blLeveringsTermijn = "" Quit Ok ; ControleMagazijn(ORDNr,MagazijnFilter) new Ok set Ok = 1 if MagazijnFilter="Van Hoecke" { set Ok = ##class(BL.Legacy.EWTOE).OrderStaatVolledigBijVanHoecke(ORDNr) } elseif MagazijnFilter="HALUX" { set Ok = '##class(BL.Legacy.EWTOE).OrderStaatVolledigBijVanHoecke(ORDNr) } quit Ok ; CHKLINE(KLNr,ORDNr,OLNr,Optie) New R,Ok,Rec,PRNr,OLUNr,Kriteria,Aantal,TOENr,FysStock,EwmsVerw,StockUpd,KlOLNr Merge:Optie'["F" Kriteria=^HULP(%J,"S","O") Set Ok=0 Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2),Aantal=$P(Rec,D,3),TOENr=$P(Rec,D,27),KlOLNr=$P(Rec,D,35) Do:PRNr . Set StockUpd=$P(Rec,D,14)'["S" Set:StockUpd StockUpd=$P(Rec,D,14)'["Z" . Set:'$$MAGHANDEL^PRODUKT2(PRNr) StockUpd=0 . Set OLUNr=$P(Rec,D,15),EwmsVerw=$D(^ORDW("IO",ORDNr,OLUNr)) . Quit:EwmsVerw . Set:Optie["F" Ok=1 . Quit:Ok Quit:TOENr . If StockUpd,Aantal>0 Do Quit:FysStock'>0 . . Set FysStock=##class(APPS.common.StockNiveauServiceFactory).Maak(PRNr).GeefFysischeStockMinReservaties() . . Set:FysStock'>0 FysStock=FysStock+##class(BL.Legacy.EWORDS5).GeefGestockeerdeFysischeVoorraad(PRNr) ; Fysische voorraad onvoldoende dus gestockeerde voorraad . Set Kriteria="",Ok=1 . For Set Kriteria=$O(Kriteria(Kriteria)) Quit:Kriteria="" Do Quit:'Ok . . Quit:"\VERH\VERZ\OTYP\MAGAZIJN\"[(D_Kriteria_D) . . Set R=Kriteria(Kriteria) . . Quit:R="" . . Xecute "Set Ok=$$CHK"_Kriteria_"(KLNr,ORDNr,OLNr,R)" . If Ok Do . . Set Ok = ##class(APPS.OrderUitvoering.DoorsturenOrderPickingService).%New().OrderLijnKanWordenDoorgestuurd(ORDNr,OLUNr) Quit Ok ; CHKWEEK(KLNr,ORDNr,OLNr,Value) New Rec,Week Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),Week=$P(Rec,D,25) Quit $$INTDATE^vhLib.DataTypes(Week,"DW")'>Value ; CHKDAG(KLNr,ORDNr,OLNr,GewenstePickDatum) New EersteVolgendeLeverdagKlant, GewensteLeverdag, LaatstePicking New ORDLijn,LeverType New Result Set EersteVolgendeLeverdagKlant=blLeveringsTermijn.GetVroegsteLeverDag(GewenstePickDatum) Set ORDLijn=^KOD(KLNr,"F",ORDNr,OLNr) Set LeverType = $P(ORDLijn,D,47) Set:'$L(LeverType) LeverType = "V" // default If LeverType?1(1"A") Set GewensteLeverdag = EersteVolgendeLeverdagKlant // // indien [A]SAP eerst volgende leverdag voorstellen If LeverType?1(1"V") Set GewensteLeverdag = $S(EersteVolgendeLeverdagKlant>$P(ORDLijn,D,25):EersteVolgendeLeverdagKlant,1:$P(ORDLijn,D,25)) ; Indien dag [V]olgende kijken of gewenste datum groter is dan volgende leverdag klant If LeverType?1(1"B",1"D") Set GewensteLeverdag = $P(ORDLijn,D,25) // indien [B]eloofd of specifieke [D]ag dan gewenste leverdag ophalen uit order. Set GewensteLeverdag = $S(EersteVolgendeLeverdagKlant>$P(ORDLijn,D,25):EersteVolgendeLeverdagKlant,1:$P(ORDLijn,D,25)) Set LaatstePicking = blLeveringsTermijn.GetLaatstePickingsTijdstip(GewensteLeverdag) // Laatst mogelijke picking ophalen voor gewenste leverdag Set Result = (LaatstePicking'>GewenstePickDatum) // DagOk indien laatst mogelijke picking niet groter dan gevraagde picking datum ;If Result Do . If $P(LaatstePicking,",")=$P($H,",") Do // indien laatste mogelijke picking vandaag . . Set Result = ( $TR($H,",",".") < $TR(LaatstePicking,",",".")) // niet goed indien laatste picking in het verleden Quit Result ; CHKLEVNR(KLNr,ORDNr,OLNr,Value) New Rec,PRNr Set Rec=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(Rec,D,2) Quit $TR($O(^KPR(PRNr,"J")),"J ","")=Value ; CHKVERZ(KLNr,ORDNr,Value) New I,Ok,VerzW,BelDat,DagNr Set R="`"_Value D:R["`OD;" ; Indien "OD;d" alle verzendwijzen "OD" ophalen voor dag 'd' . Set DagNr=$E(R,$F(R,"`OD;")),VerzW="OD" . For Set VerzW=$O(^RES("KLANT","PI","VERZENDWIJZE","D",VerzW)) Quit:$E(VerzW,1,2)'="OD" If $E(VerzW,3)?.N,R'[("`"_VerzW_";"_DagNr) Set R=R_"`"_VerzW_";"_DagNr . Set $E(R)="",Value=R Set VerzW=$$DEFAULT^KLVERZW(,KLNr,ORDNr),Ok=0 For I=1:1:$L(VerzW,"`") Do Quit:Ok . If "`"_Value["`OD" Do Quit:Ok . . If $P(VerzW,"`",I)="OD" Set Ok=1 . . Else If $P(Value,";")="OD",Value=($E($P(VerzW,"`",I),1,2)_";"_$P($P(VerzW,"`",I),";",2)) Set Ok=1 . . Else Set Ok="`"_Value_"`"[("`"_$P(VerzW,"`",I)_"`") . . Quit:Ok . . Set BelDat=$P(^KOD(KLNr,"F",ORDNr,1),D,16) . . Quit:BelDat="" Quit:$$INTDATE^vhLib.DataTypes(BelDat)>$H . . Set Ok=("`"_$$DEFAULT^KLVERZW(,KLNr)_"`")[("`"_Value_"`") ; Onze diensten te laat . If "`"_Value["`DI2" Do Quit:Ok . . If $P(VerzW,"`",I)="DI2" Set Ok=1 . . Else If $P(Value,";")="DI2",Value=($E($P(VerzW,"`",I),1,2)_";"_$P($P(VerzW,"`",I),";",2)) Set Ok=1 . . Else Set Ok="`"_Value_"`"[("`"_$P(VerzW,"`",I)_"`") . . Quit:Ok . . Set BelDat=$P(^KOD(KLNr,"F",ORDNr,1),D,16) . . Quit:BelDat="" Quit:$$INTDATE^vhLib.DataTypes(BelDat)>$H . . Set Ok=("`"_$$DEFAULT^KLVERZW(,KLNr)_"`")[("`"_Value_"`") ; Distributeur 2 te laat . If "`"_Value["`DI1" Do Quit:Ok . . If $P(VerzW,"`",I)="DI1" Set Ok=1 . . Else If $P(Value,";")="DI1",Value=($E($P(VerzW,"`",I),1,2)_";"_$P($P(VerzW,"`",I),";",2)) Set Ok=1 . . Else Set Ok="`"_Value_"`"[("`"_$P(VerzW,"`",I)_"`") . Set Ok="`"_Value_"`"[("`"_$E($P(VerzW,"`",I),1,2)_"`") . Set:'Ok Ok="`"_Value_"`"[("`"_$E($P(VerzW,"`",I),1,3)_"`") Quit Ok ; CHKVERH(KLNr,ORDNr,Value) Quit ##class(BL.Legacy.EWORDS5).CheckAandeelLijnenMetVoldoendeVoorraad(KLNr,ORDNr,Value) ; ; 100% leverbaar? CHKLeverbaar(KLNr,ORDNr) Quit ##class(BL.Legacy.EWORDS5).CheckLeverbaar(KLNr,ORDNr) ; CHKOTYP(KLNr,ORDNr,Value) New Ok,Rec,OrdTyp Set Ok=0,Rec=^KOD(KLNr,"F",ORDNr,1),OrdTyp=$P(Rec,D,25) If OrdTyp'="A",OrdTyp'="C" Do . If Value="+T" Set Ok=1 . Else If Value="T" Set Ok=OrdTyp="T" . Else Set Ok=OrdTyp'="T" Quit Ok ; ; Manuele produkten mogen niet gemengd worden met produkten uit het WMS MIXMAN(KLNr,PRNr) New R,ORDNr,OLUNr,Ok,Manueel Set Ok=1,ORDNr=$O(^HULP(%J,KLNr,"M","A","")) If ORDNr Do . Set OLUNr=$O(^HULP(%J,KLNr,"M","A",ORDNr,"")) . Quit:'OLUNr . Set Manueel=$$OPSLMAN^PRODUKT2(PRNr) . Set OLNr=^ORD("IU",ORDNr,OLUNr),R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2) . Set Ok=Manueel=$$OPSLMAN^PRODUKT2(PRNr) Quit Ok ; ; Levering en terugname mogen niet gemengd worden indien stock update PLUSMIN(Aantal,StockUpdate) new PlusMin set PlusMin = 0 if StockUpdate = ##class(DOM.MAG.enu.StockUpdate).Onbepaald() { set StockUpdate = $select(Aantal<0:##class(DOM.MAG.enu.StockUpdate).Terugname(),1:##class(DOM.MAG.enu.StockUpdate).Levering()) } if StockUpdate = ##class(DOM.MAG.enu.StockUpdate).Terugname() && ( Aantal > 0 ) set PlusMin = 1 if StockUpdate = ##class(DOM.MAG.enu.StockUpdate).Levering() && ( Aantal < 0 ) set PlusMin = 1 quit PlusMin ; ; EDI INGROEP(ORDNr,KlOLNr) New I,R,OLUNr,InGroep,Count Set (InGroep,Count)=0 For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Do . Set R=^HULP(%J,KLNr,"O",I),OLUNr=$P(R,D,19) . Quit:$P(R,D)'=ORDNr . Quit:$P($P(R,D,35),".")'=$P(KlOLNr,".") . Quit:$P($P(R,D,35),".",3)'=$P(KlOLNr,".",3) . Set Count=Count+1 Set:$D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) InGroep=InGroep+1 If InGroep,Count'=InGroep Set InGroep=0 Else Set InGroep=1 Quit InGroep ; ; EDI MARKGRP(Ref,Unmark) New I,R,GrpAant,Aantal,ORDNr,OLNr,OLUNr,LevWk,KlOLNr,BackOrd,BoLevWk New FysStock,ResWMS,PraStock,StockUpd,DynTheoS,TOENr,PakFact,Verpak New blVerzendWijze,blLeveringsTermijn,RefDate,GewenstePickDatum Set Unmark=$G(Unmark),R=^HULP(%J,KLNr,"O",Ref),ORDNr=$P(R,D),KlOLNr=$P(R,D,35) Set GrpAant=9999999,BackOrd=0 ; Aantal bepalen For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Do . Set R=^HULP(%J,KLNr,"O",I),OLUNr=$P(R,D,19) . Quit:$P(R,D)'=ORDNr . Quit:$P($P(R,D,35),".")'=$P(KlOLNr,".") . Quit:$P($P(R,D,35),".",3)'=$P(KlOLNr,".",3) . If Unmark Do Quit .. Kill ^HULP(%J,KLNr,"M","A",ORDNr,OLUNr) .. Kill:'$D(^HULP(%J,KLNr,"M","A")) ^HULP(%J,KLNr,"C") . Quit:$D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) . Set PRNr=$P(R,D,12),Aantal=$P(R,D,13),FysStock=$P(R,D,14) . Set PraStock=$P(R,D,15),DynTheoS=$P(R,D,16),LevWk=$P(R,D,18) . Set TOENr=$P(R,D,17),PakFact=$P(R,D,36) Set:'PakFact PakFact=1 . Set StockUpd=$P(R,D,22)'["S" Set:StockUpd StockUpd=$P(R,D,22)'["Z" . Set ResWMS=$$RESWMS^EWORDS(%J,KLNr,PRNr),Verpak=$$VERPAK^PRODUKT4(PRNr) . Set FysStock=FysStock+$P(^KPR(PRNr,0),D,9)-ResWMS+$P($G(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)),D) ; Het aantal van de gemarkeerde lijn er terug bij tellen om dat deze reeds in ResWMS zit EN dit aantal moet terug vrijkomen voor wijziging . If StockUpd Do .. Set:GrpAant>(Aantal\PakFact) GrpAant=(Aantal\PakFact) .. Set:GrpAant>(FysStock\PakFact) GrpAant=FysStock\PakFact .. ;Set:GrpAant*PakFact#Verpak GrpAant=GrpAant*PakFact-(GrpAant*PakFact#Verpak)\PakFact .. Set BackOrd=GrpAant*PakFact'=Aantal If 'Unmark,BackOrd,GrpAant Do . Set BoLevWk=0 ; Backorderleverweek bepalen . For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Do .. Set R=^HULP(%J,KLNr,"O",I),OLUNr=$P(R,D,19) .. Quit:$P(R,D)'=ORDNr .. Quit:$P($P(R,D,35),".")'=$P(KlOLNr,".") .. Quit:$P($P(R,D,35),".",3)'=$P(KlOLNr,".",3) .. Quit:$D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) .. Set LevWk=$$INTDATE^vhLib.DataTypes($P(R,D,18),"DW") Set:LevWk>BoLevWk BoLevWk=LevWk . Set BoLevWk=$$EXTDATE^vhLib.DataTypes(BoLevWk,"DW") . Set BackOrd=$$^vhTXTPOP("EWORDS","BACKORDGROEP") . If 'BackOrd Set BoLevWk="" Quit . Do STORE^vhTERMINA() . Do FIELD^vhScherm("EWORDSL","BOLEVWKGRP") . Do REFRESH^vhTERMINA() If 'Unmark,$L(BackOrd) Do . For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Do .. Set R=^HULP(%J,KLNr,"O",I),OLNr=$P(R,D,11),OLUNr=$P(R,D,19) .. Quit:$P(R,D)'=ORDNr .. Quit:$P($P(R,D,35),".")'=$P(KlOLNr,".") .. Quit:$P($P(R,D,35),".",3)'=$P(KlOLNr,".",3) .. Quit:$D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) .. Set RefDate=$H .. If $G(DOutSend)="L" Set $P(RefDate,",",2)=22*3600 .. Do INITDOMVKP^FLOWORD2(KLNr,ORDNr,RefDate) .. Quit:'$$CHKLINE(KLNr,ORDNr,OLNr,.Optie) .. Set PakFact=$P(R,D,36) Set:'PakFact PakFact=1 .. Set R=(GrpAant*PakFact)_D_$S(BackOrd:$P(R,D,13)-(GrpAant*PakFact),1:"")_D_$P(R,D,18)_D .. If '$P(R,D,2) Set $P(R,D,2)="" .. Else Set:$P(R,D,3)'=BoLevWk R=R_BoLevWk .. Set ^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)=R . Do WRITE^vhLIST(.LD) Do:Unmark WRITE^vhLIST(.LD) Quit ; ; EDI CHKGRP(Ref) New R,ChkGrp,R,ORDNr,Aantal,OLUNr,PRNr,FysStock,ResWMS,PraStock,StockUpd,DynTheoS,KlOLNr,TOENr Set ChkGrp=1 Set R=^HULP(%J,KLNr,"O",Ref),ORDNr=$P(R,D) For I=1:1 Quit:'$D(^HULP(%J,KLNr,"O",I)) Do Quit:'ChkGrp . Set R=^HULP(%J,KLNr,"O",I),OLUNr=$P(R,D,19),KlOLNr=$P(R,D,35) . Quit:KlOLNr="" . Quit:$P(R,D)'=ORDNr . Quit:$P($P(R,D,35),".")'=$P(KlOLNr,".") . Quit:$P($P(R,D,35),".",3)'=$P(KlOLNr,".",3) . Quit:$D(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)) . Set PRNr=$P(R,D,12),Aantal=$P(R,D,13),FysStock=$P(R,D,14) . Set PraStock=$P(R,D,15),DynTheoS=$P(R,D,16),TOENr=$P(R,D,17) . Set StockUpd=$P(R,D,22)'["S" Set:StockUpd StockUpd=$P(R,D,22)'["Z" . Set ResWMS=$$RESWMS^EWORDS(%J,KLNr,PRNr) . Set FysStock=FysStock+$P(^KPR(PRNr,0),D,9)-ResWMS+$P($G(^HULP(%J,KLNr,"M","A",ORDNr,OLUNr)),D) ; Het aantal van de gemarkeerde lijn er terug bij tellen om dat deze reeds in ResWMS zit EN dit aantal moet terug vrijkomen voor wijziging . If PraStock<0,StockUpd Set ChkGrp=0 . Else If Aantal>0,Aantal'1:"volgende orders",1:"volgend order") . Set P3=$S('$$CHKLeverbaar(KLNr,ORDNr):" (niet leverbaar)",1:"") . Set AskLink=$TR($$^vhTXTPOP("EWORDS","LINKORD","",P1,P2,P3),".","") Else Set AskLink=ORDNr Quit AskLink ; ; Toon alle ongelezen ankers eventueel tot klant beperkt ; Indien CONSNr doorgegeven dan productafhankelijke ankers, anders de productonafhankelijke ShowKennisAnker(KLNr, CONSNr, InclGeneral) New PopUp,PRNr,lbProduct,ORDNr,OLUNr Set InclGeneral=$G(InclGeneral) Do:$G(CONSNr) . Set ORDNr="" . For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do . . Set OLUNr="" . . For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:'OLUNr Do . . . Set PRNr=$P(^ORDW("D",CONSNr,"D",ORDNr,OLUNr),D) . . . Set:PRNr $LI(lbProduct,$LL($G(lbProduct))+1)=PRNr Set PopUp("Buttons")="GELEZEN" Set PopUp("Titel")="Ongelezen" Set PopUp("KLNr")=KLNr,PopUp("List")=1 Set PopUp("Criteria",2)=KLNr_" "_$P(^KKL(^KK1(KLNr),0),D,2) If InclGeneral,KLNr'=4682 Set PopUp("Criteria",3)=4682_" "_$P(^KKL(^KK1(4682),0),D,2) Quit ##class(CHUI.Derde.Kennis.Kennis).PopUp(KLNr,$LB($$$adOrderVerwerkingOpBonZetten),$G(lbProduct),$G(CUserId,$G(QU(1))),,,InclGeneral,,,.PopUp) ; ; Zijn er andere transporten voor die klant op die dag AnderTransport(%J,KLNr) New %SC,zb,R,VerzW,Datum,CONSNr,CONSVerzW,DueOutTime,VerzWijzen,Klant,sFL,ExitLoop,VerzendWijze Quit:KLNr=$$$KlantHalux Set R=$G(^HULP(%J,KLNr,"V")) Set:R="" R=$G(^HULP(%J,"V","V")) Set VerzW=$P($P(R,D),"`"),Datum=$P(R,D,2),(CONSNr,VerzWijzen)="" If $G(LinkORDNr),$D(^HULP(%J,"LinkORDNr",LinkORDNr)) Do . Set R=^HULP(%J,"LinkORDNr",LinkORDNr) . Set ^HULP(%J,KLNr,"V")=R . Set ^HULP(%J,"V","V")=R Else Do . For Set CONSNr=$O(^ORDW("IK",KLNr,CONSNr)) Quit:CONSNr="" Do Quit:$G(ExitLoop) . . Set R=^ORDW("D",CONSNr),CONSVerzW=$P(R,D,2),DueOutTime=$P(R,D,3) . . If $P(CONSVerzW,";")=$P(VerzW,";") Set VerzWijzen="",ExitLoop=1 Quit ; Er is reeds een levering met deze verzendwijze . . If $G(LinkORDNr),$D(^HULP(%J,"LinkORDNr",LinkORDNr)) Set VerzWijzen="",ExitLoop=1 Quit ; Gelinkt order . . Quit:$$DIFFTIME^vhLib.DataTypes($H,DueOutTime,"U")<1 . . If VerzWijzen'[CONSVerzW,$P(CONSVerzW,";")'=$P(VerzW,";") Set VerzWijzen=VerzWijzen_";"_CONSVerzW . Set $E(VerzWijzen)="" . Do:$L(VerzWijzen) . . Set Klant=$P(^KKL(^KK1(KLNr),0),D,2) . . Set R=$$^vhTXTPOP("EWORDS","ANDERTRANSP","",Klant,$$SHOW^KLVERZW(,,,VerzW),$$EXTDATE^vhLib.DataTypes(Datum),$TR(VerzWijzen,";",","),$S($L(VerzWijzen,";")=1:VerzWijzen,1:"Andere")) . . If R="" Do:$G(LinkORDNr) Quit . . . Set R=^HULP(%J,KLNr,"V") . . . Set ^HULP(%J,"LinkORDNr",LinkORDNr)=R . . If $L(VerzWijzen,";")>1 Do Quit:zb="CANC" . . . For I=1:1:$L(VerzWijzen,";") Do . . . . Set VerzW=$P(VerzWijzen,";",I) . . . . Set VerzWijzen(I)=VerzW_D_$P(^RES("KLANT","PI","VERZENDWIJZE","D",VerzW),"`",2) . . . Set VerzW=$$WILD^vhPOPUP("C;C","KO1-","Andere verzendwijze",.VerzWijzen) . . Else Set VerzW=VerzWijzen . . Set VerzendWijze = ##class(DOM.VKP.VerzendWijze).OpenId(VerzW) . . Set R=VerzW_D_$TR($$CALCDOUT^EWORDS(VerzW,KLNr),",",D) . . Set R=R_D_VerzendWijze.VerzendZone,$P(R,D,5)=$$CALCZDAT^EWORDS(VerzW,$P(R,D,2)) . . Set $P(R,D,2,99)=$TR($P(R,D,2,99),"`",D) . . Set ^HULP(%J,KLNr,"V")=R . . Set ^HULP(%J,"V","V")=R . . If $G(LinkORDNr) Set ^HULP(%J,"LinkORDNr",LinkORDNr)=R . . Else Kill ^HULP(%J,"LinkORDNr") . . new sdVerzendWijze set sdVerzendWijze = ^HULP(%J,KLNr,"V") . . Do DISPLAY^vhScherm("EWORDSH",,,,"VERZWIJZE;GERAAPT;VERZZONE;VERZDATUM") Quit