Index: EWORDS6.mac.rou =================================================================== diff -u -r48361 -r75040 --- EWORDS6.mac.rou (.../EWORDS6.mac.rou) (revision 48361) +++ EWORDS6.mac.rou (.../EWORDS6.mac.rou) (revision 75040) @@ -2,32 +2,41 @@ #include vhLib.Macro EWORDS6 ;E'WMS Automatisch markeren voor orderpicking [ 10/28/2003 10:26 AM ] - /* - ============================================================================================================================ + /* + ============================================================================================================================ BELANGRIJK : ============ - De controles om te mogen groeperen ("Cumuleer Order" of kortere naam ... ) moeten in 2 routines in sync gehouden worden !!! - EWORDS3 : manueel markeren (via Admin-scherm, UI met vhTXTPOP-meldingen) - EWORDS6 : automatisch markeren (via background job, cfr. IsVoorVandaagOfMorgen) - - ============================================================================================================================ + ============================================================================================================================ */ + +SendWMSIndienAfhaling(ORDNr) + Set VerzW = $P($P($$DEFAULT^KLVERZW(, , ORDNr),"`"),";") + If (VerzW["AF")&&$$CheckAutoSend(ORDNr) ; AFH en AFC + { + Do ##class(vhLib.Logger).%New().Info("Klaarzetten voor picking", "Afhaling order '" _ ORDNr _ "' wordt doorgestuurd, werd getriggerd door interface AXOrder2Admin" ) + Do SendWMS(ORDNr) + } + Quit ; WMS verwerking en eventueel doorsturen naar Egemin software indien voor vandaag SendWMS(ORDNr) New %J,I,R,PRNr,Aantal,OLUNr,LeverDag,VerzDat,DOutDate,DOutTime,VerzW,VerzZ,LevAdr,ChkBeletDone,ORDNrs,CumulORDNr,WaitORDNrs New LandCode,PostCode - New PickingDag, KlantNummer, Filters, FilterIterator, IsVoorVandaag, ConsolidatieNummer + New PickingDag, KlantNummer, FilterIterator, IsVoorVandaag, ConsolidatieNummer New OrderApi, OrderLijn, OrderLijnIterator New PickingOpdrachtInfo, PickingOpdrachtInfoIterator, PickingOpdrachtInfoLijst + New IsKlantOnderRembours, OrderPickingOpdrachtInfoLijst, OrderLijnCount, PickingVoorVandaagOrderLijnCount, IsOrderVolledigPickingVoorVandaag #dim PickingDag As BL.Legacy.EWORDS6.enu.PickingDag = ##class(BL.Legacy.EWORDS6).PickingVoorVandaagVolgendeArbeidsdagOfAndereDag(ORDNr) Do ##class(BL.Legacy.EWORDS6.InfoMelder).%New().Controleer(ORDNr) If ($$$Not(PickingDag = ##class(BL.Legacy.EWORDS6.enu.PickingDag).Andere())) { #dim KlantNummer As %String = ##class(BL.Legacy.EWORDS6).GeefKlantNummer(ORDNr, D) + #dim IsKlantOnderRembours As %Boolean = ##class(BL.Legacy.EWORDS6).IsKlantOnderRembours(KlantNummer) Set ORDNrs = $$Cumul(ORDNr) Set WaitORDNrs = $$WachtendeOrders(KlantNummer) @@ -44,28 +53,40 @@ #dim OrderApi As DOM.VKP.impl.DataM.DataMOrderAPI = ##class(DOM.VKP.impl.DataM.DataMOrderAPI).%New() #dim PickingOpdrachtInfoLijst As %ListOfDataTypes = ##class(%ListOfDataTypes).%New() + #dim OrderPickingOpdrachtInfoLijst As %ListOfDataTypes = ##class(%ListOfDataTypes).%New() + #dim OrderLijnCount, PickingVoorVandaagOrderLijnCount As %Integer + #dim IsOrderVolledigPickingVoorVandaag As %Boolean For I=1:1:$Length(ORDNrs,";") { Set CumulORDNr = $Piece(ORDNrs,";",I) Quit:$$$Not(CumulORDNr) #dim OrderLijnIterator As TECH.Iterator = OrderApi.GeefOrder(CumulORDNr).GeefOrderLijnIterator() + Set IsOrderVolledigPickingVoorVandaag = $$$False + Set OrderLijnCount = 0 + Set PickingVoorVandaagOrderLijnCount = 0 While (OrderLijnIterator.HasNext()) { #dim OrderLijn As DOM.VKP.ProductOrderlijn = OrderLijnIterator.Next() If (OrderLijn.%IsA("DOM.VKP.impl.DataM.DataMProductOrderlijn") && $$$Not(OrderLijn.GeefProductID() = "")) { - Do PickingOpdrachtInfoLijst.Insert(##class(BL.Legacy.EWORDS.PickingOpdrachtInfo).%New(OrderLijn.GeefAantal(), OrderLijn.GeefLeverdag(), OrderLijn.GeefOrderID(), OrderLijn.GeefID())) + Set OrderLijnCount = OrderLijnCount + 1 + If ##class(BL.Legacy.EWORDS6).PickingVoorVandaagVolgendeArbeidsdagOfAndereDag(OrderLijn.GeefOrderID(),OrderLijn.GeefLijnVolgNr()) { + Set PickingVoorVandaagOrderLijnCount = PickingVoorVandaagOrderLijnCount + 1 + Do OrderPickingOpdrachtInfoLijst.Insert(##class(BL.Legacy.EWORDS.PickingOpdrachtInfo).%New(OrderLijn.GeefAantal(), OrderLijn.GeefLeverdag(), OrderLijn.GeefOrderID(), OrderLijn.GeefID())) + } } } + + Set IsOrderVolledigPickingVoorVandaag = (OrderLijnCount = PickingVoorVandaagOrderLijnCount) + + If ($$$Not(IsKlantOnderRembours && $$$Not(IsOrderVolledigPickingVoorVandaag))) { + Set PickingOpdrachtInfoLijst = ##class(TECH.ListUtils).Complement(OrderPickingOpdrachtInfoLijst, PickingOpdrachtInfoLijst) } + } - #dim Filters As %ListOfDataTypes = ##class(%ListOfDataTypes).%New() - Do Filters.Insert(##class(BL.Legacy.EWORDS.PickingOpdrachtInfoIterator.Filter.OrgaluxFilter).%New()) - Do Filters.Insert(##class(BL.Legacy.EWORDS.PickingOpdrachtInfoIterator.Filter.NietOrgaluxFilter).%New()) - #dim IsVoorVandaag As %Boolean = (PickingDag = ##class(BL.Legacy.EWORDS6.enu.PickingDag).Vandaag()) - #dim FilterIterator As TECH.Iterator = ##class(TECH.ListIterator).%New(Filters) + #dim FilterIterator As TECH.Iterator = ##class(TECH.ListIterator).%New(##class(BL.Legacy.EWORDS.Save).GeefFilters()) Set %J = $$%J^vhRtn1() Kill ^HULP(%J) @@ -74,25 +95,35 @@ #dim ConsolidatieNummer As %String = $$GETNUM^FLOW("KUL", "KU1") #dim PickingOpdrachtInfoIterator As TECH.Iterator = ##class(BL.Legacy.EWORDS.PickingOpdrachtInfoIterator).%New(PickingOpdrachtInfoLijst, FilterIterator.Next()) - While (PickingOpdrachtInfoIterator.HasNext()) { - #dim PickingOpdrachtInfo As BL.Legacy.EWORDS.PickingOpdrachtInfo = PickingOpdrachtInfoIterator.Next() + If (PickingOpdrachtInfoIterator.HasNext()) { + While (PickingOpdrachtInfoIterator.HasNext()) { + #dim PickingOpdrachtInfo As BL.Legacy.EWORDS.PickingOpdrachtInfo = PickingOpdrachtInfoIterator.Next() + If '$D(^ORDW("IO",PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer())) + { + Set ^HULP(%J, KlantNummer, "M", "A", PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer()) = PickingOpdrachtInfo.GeefData() + } + } - Set ^HULP(%J, KlantNummer, "M", "A", PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer()) = PickingOpdrachtInfo.GeefData() - } + Do INITDOMVKP^FLOWORD2(KlantNummer, ORDNr) - Do INITDOMVKP^FLOWORD2(KlantNummer, ORDNr) - - Set VerzW = $$DEFAULT^KLVERZW(, KlantNummer, ORDNr) - Set VerzZone = "" - Set DOutDateTime = $Select(IsVoorVandaag:+$Horolog,1:+$$CALCDATE^vhLib.DataTypes($Horolog,"A",1)) _ "," _ blVerzendWijze.DueOutPickingTime() - Set VerzDat = blLeveringsTermijn.GetVroegsteLeverDag(+DOutDateTime) - Set DOutDateTime = blLeveringsTermijn.GetLaatstePickingsTijdstip(VerzDat) - Set LevAdr = ^KOD(KlantNummer, "F", ORDNr, 3) - - Do BLDCONS^EWORDS2(KlantNummer, $Name(^HULP(%J, KlantNummer, "M")), ConsolidatieNummer, $Piece(VerzW, ";"), VerzDat, DOutDateTime, VerzZone, LevAdr, .ChkBeletDone) ; Creatie suborderlijnen - - If ($$WMSIsActief() && IsVoorVandaag) { - Do SEND^EWORDSW(ConsolidatieNummer) + Set VerzW = $$DEFAULT^KLVERZW(, KlantNummer, ORDNr) + Set VerzZone = "" + Set DOutDateTime = $Select(IsVoorVandaag:+$Horolog,1:+$$CALCDATE^vhLib.DataTypes($Horolog,"A",1)) _ "," _ blVerzendWijze.DueOutPickingTime() + Set VerzDat = blLeveringsTermijn.GetVroegsteLeverDag(+DOutDateTime) + If (##class(DOM.DomeinContext).Instance().GeefProjectSettingsAPI().DD1StockerenBijVRDIndienVroegerGeproduceerd()){ + Set:(VerzW="DD1") VerzDat=##class(TECH.DateTime).BerekenWerkdag($$GetPickDatum^EWORDS6(ORDNr),1) ;Leverdatum met behoud Pickdatum + } + Set DOutDateTime = blLeveringsTermijn.GetLaatstePickingsTijdstip(VerzDat) + Set LevAdr = ^KOD(KlantNummer, "F", ORDNr, 3) + + Do BLDCONS^EWORDS2(KlantNummer, $Name(^HULP(%J, KlantNummer, "M")), ConsolidatieNummer, $Piece(VerzW, ";"), VerzDat, DOutDateTime, VerzZone, LevAdr, .ChkBeletDone) ; Creatie suborderlijnen + + Do ##class(vhLib.Logger).%New().Info("Klaarzetten voor picking", "Bon '" _ ConsolidatieNummer _ "' is automatisch aangemaakt, WMSActief:"_$$WMSIsActief()_", IsVoorVandaag:"_IsVoorVandaag ) + Set ^BONLog(ConsolidatieNummer,+$H)=$LB("A",IsVoorVandaag,$zdt($H,8)) + + If ($$WMSIsActief() && IsVoorVandaag) { + Do SEND^EWORDSW(ConsolidatieNummer) + } } Kill ^HULP(%J, KlantNummer) @@ -115,7 +146,7 @@ AutoSendIsActief() New AutoSendIsActief Set AutoSendIsActief=+$G(^ORDW("AUTO")) - Set AutoSendIsActief=$S($P($H,",",2)<25200:0,$P($H,",",2)>68400:0,1:AutoSendIsActief) ; Enkel tussen 07:00 en 19:00 + Set AutoSendIsActief=$S($P($H,",",2)<19800:0,$P($H,",",2)>68400:0,1:AutoSendIsActief) ; Enkel tussen 05:30 en 19:00 - aangepast PV - 31/5/2023 Quit AutoSendIsActief ; Controle of het order (en alle eventueel gelinkte orders) voor dezelfde leverdag zijn. @@ -126,27 +157,36 @@ Quit LeverDagOk ; Bepaal de leverdagen van een groep gelinkte orders -GetLeverDagen(ORDNr) + ; Optioneel kan je de opvraging beperken tot die voor ��n specifieke orderlijn. Zoniet wordt voor het volledige order incl zijn gekoppelde orders. +GetLeverDagen(GevraagdORDNr,GevraagdOLNr) New I,R,KLNr,ORDNrs,lbLeverDagen,LeverDagen,LeverDag - Set R=^KO1(ORDNr,"F"),KLNr=$P(R,"\") - Set ORDNrs=$$GetOrderLink(ORDNr) ; Ophalen gelinkte orders - For I=1:1:$L(ORDNrs,";") Set ORDNr=$P(ORDNrs,";",I) Set:ORDNr ORDNrs(ORDNr)="" + Set R=^KO1(GevraagdORDNr,"F"),KLNr=$P(R,"\") ; Klant ophalen. + Set ORDNrs=$$GetOrderLink(GevraagdORDNr) ; Ophalen gelinkte orders. + + New ORDNr + For I=1:1:$L(ORDNrs,";") Set ORDNr=$P(ORDNrs,";",I) Set:ORDNr ORDNrs(ORDNr)="" ; delimited list naar multidimensional. + + ; Alle leverdagen verzamelen. Set ORDNr="" For { Set ORDNr=$O(ORDNrs(ORDNr)) Quit:ORDNr="" - Set lbLeverDagen=$$GetLeverDagen^FLOWORD5(KLNr,ORDNr) + Quit:($G(GevraagdOLNr)'="")&&(GevraagdORDNr'=ORDNr) + Set lbLeverDagen=$$GetLeverDagen^FLOWORD5(KLNr,ORDNr,$G(GevraagdOLNr)) For I=1:1:$LL(lbLeverDagen) Set LeverDag=$LI(lbLeverDagen,I),LeverDagen(LeverDag)="" } + + ; Multidimensional naar Listbuild. Set (lbLeverDagen,LeverDag)="" For Set LeverDag=$O(LeverDagen(LeverDag)) Quit:LeverDag="" Set lbLeverDagen=lbLeverDagen_$LB(LeverDag) + Quit lbLeverDagen ; Geeft de DUEOUT picking. Als die gisteren of ouder is, wordt de eerste zinvolle teruggegeven. -GetPickDatum(ORDNr) - New R,KLNr,blVerzendWijze,blLeveringsTermijn,LeverDag +GetPickDatum(ORDNr,GevraagdOLNr) + New R,KLNr,blVerzendWijze,blLeveringsTermijn,LeverDag,PickDatum Set PickDatum="" - Set LeverDag=$LG($$GetLeverDagen(ORDNr)) // = De vroegste leverdag van alle lijnen van het order en zijn gekoppelde orders. + Set LeverDag=$LG($$GetLeverDagen(ORDNr,$G(GevraagdOLNr))) // = De vroegste leverdag van alle lijnen van het order en zijn gekoppelde orders. if $length(LeverDag) { Set R=^KO1(ORDNr,"F"),KLNr=$P(R,"\",1) Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) @@ -180,99 +220,121 @@ ; Deze routine verwerkt alle orders verzameld in de wachtrij door 'FetchAutoSend' ; Opgestartom de 15 minuten -AutoSend +AutoSend ; Orders die in de wachtrij staan klaarzetten voor picking New Set Q="K",D="\",U=";",QU(1)=0 If $$AutoSendIsActief() { - Lock +^ORDW("AUTO"):30 - Quit:'$T - ; Sorteren volgens tijstip en klant - Set ORDNr="" - For { - Set ORDNr=$O(^ORDW("AUTO",ORDNr)) - Quit:ORDNr="" - Set KLNr=$P($G(^KO1(ORDNr,"F")),"\") - If 'KLNr Kill ^ORDW("AUTO",ORDNr) Continue - Set KlKey=^KK1(KLNr) - If '$D(^KOD(KLNr,"F",ORDNr)) Kill ^ORDW("AUTO",ORDNr) Continue - Continue:'##class(BL.Legacy.EWORDS6).CheckAutoSend(ORDNr) - Continue:'$D(^ORDW("AUTO",ORDNr)) ; Het order is ondertussen reeds doorgestuurd - Set Aangemaakt=^ORDW("AUTO",ORDNr),AanmaakDatum=$P(Aangemaakt,","),AanmaakTijdstip=$P(Aangemaakt,",",2) - Set:$$DIFFTIME^vhLib.DataTypes(Aangemaakt,$H)>0 ORDNrs(AanmaakDatum,AanmaakTijdstip,KlKey,ORDNr)="" - } - Set AanmaakDatum="" - For { - Set AanmaakDatum=$O(ORDNrs(AanmaakDatum)) - Quit:AanmaakDatum="" - Set AanmaakTijdstip="" - For { - Set AanmaakTijdstip=$O(ORDNrs(AanmaakDatum,AanmaakTijdstip)) - Quit:AanmaakTijdstip="" - Set KlKey="" - For { - Set KlKey=$O(ORDNrs(AanmaakDatum,AanmaakTijdstip,KlKey)) - Quit:KlKey="" - Set ORDNr="" - For { - Set ORDNr=$O(ORDNrs(AanmaakDatum,AanmaakTijdstip,KlKey,ORDNr)) - Quit:ORDNr="" - Continue:'$D(^ORDW("AUTO",ORDNr)) ; Het order is samen met andere orders gecumuleerd verwerkt - Do SendWMS(ORDNr) - } - } - } - } + Lock +^ORDW("AUTO"):30 + Quit:'$T + ; Sorteren volgens tijstip en klant + Set ORDNr="" + For { + Set ORDNr=$O(^ORDW("AUTO",ORDNr)) + Quit:ORDNr="" + Set KLNr=$P($G(^KO1(ORDNr,"F")),"\") + If 'KLNr Kill ^ORDW("AUTO",ORDNr) Continue + Set KlKey=^KK1(KLNr) + If '$D(^KOD(KLNr,"F",ORDNr)) Kill ^ORDW("AUTO",ORDNr) + If '##class(BL.Legacy.EWORDS6).CheckAutoSend(ORDNr) Kill ^ORDW("AUTO",ORDNr) + Continue:'$D(^ORDW("AUTO",ORDNr)) ; Het order is ondertussen reeds doorgestuurd + Set Aangemaakt=^ORDW("AUTO",ORDNr),AanmaakDatum=$P(Aangemaakt,","),AanmaakTijdstip=$P(Aangemaakt,",",2) + Set:$$DIFFTIME^vhLib.DataTypes(Aangemaakt,$H)>0 ORDNrs(AanmaakDatum,AanmaakTijdstip,KlKey,ORDNr)="" + } + Set AanmaakDatum="" + For { + Set AanmaakDatum=$O(ORDNrs(AanmaakDatum)) + Quit:AanmaakDatum="" + Set AanmaakTijdstip="" + For { + Set AanmaakTijdstip=$O(ORDNrs(AanmaakDatum,AanmaakTijdstip)) + Quit:AanmaakTijdstip="" + Set KlKey="" + For { + Set KlKey=$O(ORDNrs(AanmaakDatum,AanmaakTijdstip,KlKey)) + Quit:KlKey="" + Set ORDNr="" + For { + Set ORDNr=$O(ORDNrs(AanmaakDatum,AanmaakTijdstip,KlKey,ORDNr)) + Quit:ORDNr="" + Continue:'$D(^ORDW("AUTO",ORDNr)) ; Het order is samen met andere orders gecumuleerd verwerkt + If ( ##class(BL.Legacy.EWORDS6).CheckAutoSend(ORDNr)) { ; Een vorig order kan met de stock gaan lopen zijn. + Do SendWMS(ORDNr) + } Else { + K ^ORDW("AUTO",ORDNr) + } + } + } + } + } } Quit ; ********************************** // Deze niet meer rechtstreeks aanroepen, maar wel via de classmethod ##class(BL.Legacy.EWORDS6).CheckAutoSend(...) -CheckAutoSend(ORDNr) +CheckAutoSend(ORDNr) New Check,fc Set Check=$$SendWMSStatus(ORDNr)="A" ; Status i.v.m. het doorsturen is automatisch + ;w:$G(io)=1015 0,Check," " /// Niet automatisch doorsturen indien we - om de leverdatum te halen - al te laat zijn of pas later dan morgen moeten doorsturen. Set:Check Check=##class(BL.Legacy.EWORDS6).PickingVoorVandaagVolgendeArbeidsdagOfAndereDag(ORDNr) - + ;w:$G(io)=1015 1,Check," " Set:Check Check=$$OrderGesloten(ORDNr) + Set:Check Check=$$OrderNotNOSEND(ORDNr) + ;w:$G(io)=1015 2,Check," " Set:Check Check='$$IsContractOfAfroep(ORDNr) + ;w:$G(io)=1015 3,Check," " Set:Check Check='$$IsTerugname(ORDNr) + ;w:$G(io)=1015 4,Check," " Set:Check Check='$$InWMS(ORDNr) + ;w:$G(io)=1015 5,Check," " Set:Check Check=$$CheckStock(ORDNr) + ;w:$G(io)=1015 6,Check," " Set:Check Check=$$MagazijnBeschikbaar(ORDNr) + ;w:$G(io)=1015 7,Check," " Set:Check Check=##class(APPS.OrderUitvoering.DoorsturenOrderPickingService).%New().OrderKanWordenDoorgestuurd(ORDNr) + ;w:$G(io)=1015 8,Check," " Set:Check Check=##class(BL.Legacy.EWTOE).OrderStaatVolledigBijVanHoecke(ORDNr) + ;w:$G(io)=1015 9,Check," " If Check { ; Indien de magazijnen beschikbaar zijn, de forecast herberekenen en de beschikbaarheid terug controleren Set fc=$$FETCHSOM^EWSTAT() Do CheckTijdsraming^EWORDSM() Set Check=$$MagazijnBeschikbaar(ORDNr) } + ;w:$G(io)=1015 10,Check," " + If Check { Do:'$$CheckKredietwaardig(ORDNr) MarkeerKredietProbleemInORDNr^EWORDS3(ORDNr,"A") Set Check=$$CheckBoekhouding(ORDNr) } + ;w:$G(io)=1015 11,Check," " Quit Check ; Geef de status van een order i.v.m. het doorsturen SendWMSStatus(ORDNr) New R,KLNr,SendWMSStatus Set R=^KO1(ORDNr,"F"),KLNr=$P(R,"\",1) - Set SendWMSStatus=$P(^KOD(KLNr,"F",ORDNr,1),"\",26) - If SendWMSStatus'="W" { - Set:SendWMSStatus="" SendWMSStatus=$E($P(^KKL(^KK1(KLNr),2),"\",8)) - Set:SendWMSStatus'="M" SendWMSStatus="A" - } + Set SendWMSStatus=$E($P(^KKL(^KK1(KLNr),2),"\",8)) + Set:SendWMSStatus'="M" SendWMSStatus="A" Quit SendWMSStatus - + +VerzendwDD1(ORDNr) + New R,KLNr + Set R=^KO1(ORDNr,"F"),KLNr=$P(R,"\",1) + Quit $$DEFAULT^KLVERZW(,KLNr,ORDNr)="DD1" + ; Do orders moeten gesloten zijn OrderGesloten(ORDNr) New R,KLNr,ORDNrs,OrderGesloten Set R=^KO1(ORDNr,"F"),KLNr=$P(R,"\",1) Set OrderGesloten=$P(^KOD(KLNr,"F",ORDNr,1),"\",22) Quit OrderGesloten +OrderNotNOSEND(ORDNr) + Quit '($D(^ORDW("NOSEND",ORDNr))&&($$DIFFTIME^vhLib.DataTypes(^ORDW("NOSEND",ORDNr),$H)<1800)) ;Orders die door het terugtrekken uit ORDW op NOSEND gekomen zijn moeten 30min. wachten + ; Contract- en afroeporders niet toegestaan IsContractOfAfroep(ORDNr) New R,KLNr,ORDNrs,IsContractOfAfroep,OrderType @@ -286,6 +348,7 @@ Set:'IsContractOfAfroep IsContractOfAfroep=OrderType="A" ; Afroep Quit:IsContractOfAfroep } + Quit:##class(TECH.Config.ConfigMgr).Instance().GeefBoolean("BevestigdAXOrderSluitenActief") 0 ; hack PV Quit IsContractOfAfroep ; Terugnames niet toegestaan @@ -314,6 +377,7 @@ ; Boekhoudkundige controle? CheckBoekhouding(ORDNr) + Quit:##class(TECH.Config.ConfigMgr).Instance().GeefBoolean("BevestigdAXOrderSluitenActief") 1 ; hack PV New CheckIsOK Set CheckIsOK=$$CheckRembours(ORDNr) Set:CheckIsOK CheckIsOK=$$CheckVooruitBetaling(ORDNr) @@ -327,6 +391,7 @@ Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set R=^KKL(^KK1(KLNr),3),Rembours=$P(R,D) Set PickingMagStarten = ('Rembours) + Quit:##class(TECH.Config.ConfigMgr).Instance().GeefBoolean("BevestigdAXOrderSluitenActief") 1 ; hack PV Quit PickingMagStarten ; Controle vooruitbetaling @@ -336,13 +401,15 @@ Set CheckIsOK=$$IsKlantVrijgesteldVanVrijgaveDoorBKH(KLNr) Set:'CheckIsOK CheckIsOK=$$CheckVolledigHalux(KLNr,ORDNr) Set:'CheckIsOK R=^KKL(^KK1(KLNr),3),VooruitBetaling=$P(R,D,2),CheckIsOK='VooruitBetaling + Quit:##class(TECH.Config.ConfigMgr).Instance().GeefBoolean("BevestigdAXOrderSluitenActief") 1 ; hack PV Quit CheckIsOK ; Controle dubieus CheckDubieus(ORDNr) New R,KLNr,CheckIsOK,Dubieus,SendWMS Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set R=^KKL(^KK1(KLNr),3),Dubieus=$P(R,D,8),CheckIsOK='Dubieus + Quit:##class(TECH.Config.ConfigMgr).Instance().GeefBoolean("BevestigdAXOrderSluitenActief") 1 ; hack PV Quit CheckIsOK ; Controle kredietwaardig? @@ -352,6 +419,7 @@ Set CheckIsOK=$$IsKlantVrijgesteldVanVrijgaveDoorBKH(KLNr) Set:'CheckIsOK CheckIsOK=$$CheckVolledigHalux(KLNr,ORDNr) Set:'CheckIsOK CheckIsOK=+$$WAARDIG^KREDIET(KLNr) + Quit:##class(TECH.Config.ConfigMgr).Instance().GeefBoolean("BevestigdAXOrderSluitenActief") 1 ; hack PV Quit CheckIsOK ; De voorraad van alle gelinkte orders voldoende? @@ -420,15 +488,16 @@ Set WVRes=$$CV2MAG^MRP(PRNr,$P($$VerkoopKinderen^PRODUKT4(PRNr,WeekDat),"\",2)) Set WVTekort=$S(WVStockPraStock) - If InStock { ; Product in voorraad, controle op gemiddelde weekverkoop - Set R=^KPR(PRNr,1),GemWVK=$P(R,D,23) - Set GemWVK=GemWVK+$P(GemWVK,"#",2) - Set:GemWVK InStock=(PraStock>(GemWVK+Aantal)) - } + ;If InStock { ; Product in voorraad, controle op gemiddelde weekverkoop + ; Set R=^KPR(PRNr,1),GemWVK=$P(R,D,23) + ; Set GemWVK=GemWVK+$P(GemWVK,"#",2) + ; Set:GemWVK InStock=(PraStock>(GemWVK+Aantal)) + ;} Quit $G(InStock,1) ; Zijn alle magazijnen beschikbaar voor alle gelinkte orders? @@ -462,12 +531,12 @@ ; De orders voor vandaag of morgen opzoeken in ^KOD en in de wachtrij plaatsen voor 'AutoSend' ; Elke minuut opgestart -FetchAutoSend +FetchAutoSend ;Orders die klaargezet kunnen worden in een wachtrij plaatsen New Set Q="K",D="\",U=";",Horolog=$H If $$AutoSendIsActief() { Lock +^ORDW("AUTO"):30 - Quit:$$$Not($Test) + Quit:'$T Set KLNr=0 For { Set KLNr=$O(^KOD(KLNr)) @@ -536,6 +605,10 @@ Set:'Check Warning="Terugname." } If Check { + Set Check='$$VerzendwDD1(ORDNr) + Set:'Check Warning="Verzendwijze DD1" + } + If Check { Set Check=$$CheckStock(ORDNr) Set:'Check Warning="Onvoldoende voorraad.",Manueel=1 } @@ -587,7 +660,9 @@ ; Cumuleren van orders voor eenzelfde klant Cumul(ORDNr) - New R,KLNr,ORDNrs,CumulORDNr + New R,KLNr,ORDNrs,CumulORDNr,PickingDag + #dim PickingDag As BL.Legacy.EWORDS6.enu.PickingDag = ##class(BL.Legacy.EWORDS6).PickingVoorVandaagVolgendeArbeidsdagOfAndereDag(ORDNr) + Set ORDNrs=ORDNr,R=^KO1(ORDNr,"F"),KLNr=$P(R,D),CumulORDNr="" #dim LegacyPartijAPI As DOM.PARTIJ.LegacyPartijAPI = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI() #dim Klant As DOM.VKP.Klant = ##class(DOM.DomeinContext).Instance().GeefVerkoopAPI().GeefKlant(LegacyPartijAPI.GeefKlantPartijID(KLNr)) @@ -598,6 +673,7 @@ Quit:CumulORDNr="" Set R=^KO1(CumulORDNr,"F") Continue:$P(R,D)'=KLNr + Continue:PickingDag'=##class(BL.Legacy.EWORDS6).PickingVoorVandaagVolgendeArbeidsdagOfAndereDag(CumulORDNr) If ORDNrs'[CumulORDNr,$$CheckCumul(ORDNr,CumulORDNr) Set ORDNrs=ORDNrs_";"_CumulORDNr } } @@ -700,10 +776,15 @@ ; Orgaluxcode orders steeds afzonderlijk? Orgalux(ORDNr,CumulORDNr) - New CumulOrgalux - Set CumulOrgalux='$$ISORGAL^FLOW("O",ORDNr) - Set:CumulOrgalux CumulOrgalux='$$ISORGAL^FLOW("O",CumulORDNr) - Quit CumulOrgalux + New MagCumuleren, LegacyEwords6 + + #dim LegacyEwords6 As BL.Legacy.EWORDS6 = ##class(BL.Legacy.EWORDS6).%New() + #dim MagCumuleren As %Boolean = $$$False + + Set MagCumuleren = $$$Not(LegacyEwords6.BevatOrderOrgalux(ORDNr)) + Set:(MagCumuleren) MagCumuleren = $$$Not(LegacyEwords6.BevatOrderOrgalux(CumulORDNr)) + + Quit MagCumuleren TaorIndeling(ORDNr,CumulORDNr) New CumulTaorIndeling @@ -808,4 +889,3 @@ If LevPerfCode="",LeverTermijn,LeverTermijn<$H ;Set OrderLijn.SetLevPerfCode()=Code ; cfr CSC } Quit -