EWORDSM ;E'WMS Doorsturen van een Consolidatie order naar het WMS (controle magazijnen) ; Instellen manueel en automatisch doorsturen per magazijn MagazijnBeheer New %TC,Modifief,Magazijn,LD,SortKey,Pos,Input Do ADD^vhLock("^EWREC(""MAGAZIJN"")") If %TC { Set Modified=0 Do Fetch(.Magazijn) Do INIT^vhLIST("EWORDS","MAGAZIJN",.LD) Set Pos=$P(LD("POS"),"`") Set SortKey=$O(Magazijn(""),-1),$P(Pos,";")=$P(Pos,";")-(SortKey\2),$P(Pos,";",3)=$P(Pos,";")+SortKey-1 Set $P(LD("POS"),"`")=Pos,$P(LD("SET"),"`")=Pos Do WRITE^vhLIST(.LD) For { Set Input=$$SCROLL^vhLIST(.LD) If Input="COM" Set Input="" Do CALL^vhMenu("EWORDSMB") Do EXEC^vhMenu("EWORDSMB",.Input) If Input="CANC" Set Input=$S(Modified:$$SAVE^vhINP(1,1,1),1:".") If $L(Input) Do:Input="-" Save(.Magazijn) Quit } Do REMOVE^vhLock("^EWREC(""MAGAZIJN"")") } Else {Do LDISP^vhLock("^EWREC(""MAGAZIJN"")","Magazijnen")} Quit ; Wissel voor een magazijn 'automatisch' tussen aan en af ToggleAuto Set $P(Magazijn(LD("SELECT")),D,2)='$P(Magazijn(LD("SELECT")),D,2) Do LINE^vhLIST(.LD,LD("SELECT")) Set Modified=1 Quit ; Wissel voor een magazijn 'manueel' tussen aan en af ToggleMan Set $P(Magazijn(LD("SELECT")),D,3)='$P(Magazijn(LD("SELECT")),D,3) Set:'$P(Magazijn(LD("SELECT")),D,3) $P(Magazijn(LD("SELECT")),D,2)=0 ; Indien 'manueel af' ook 'automatisch af' Do LINE^vhLIST(.LD,LD("SELECT")) Set Modified=1 Quit ; Zet een magazijn volledig aan of af SwitchMenu(To) If To="On" Set ($P(Magazijn(LD("SELECT")),D,2),$P(Magazijn(LD("SELECT")),D,3))=1 Else Set ($P(Magazijn(LD("SELECT")),D,2),$P(Magazijn(LD("SELECT")),D,3))=0 Do LINE^vhLIST(.LD,LD("SELECT")) Set Modified=1 Quit ; Controle voor het menuitem 'Alle magazijnen aan of af' AllOn() New AllOn,SortKey Set AllOn=1,SortKey="" For { Set SortKey=$O(Magazijn(SortKey)) Quit:SortKey="" Set AllOn=$P(Magazijn(SortKey),D,2) Set:AllOn AllOn=$P(Magazijn(SortKey),D,3) Quit:'AllOn } Quit AllOn ; Zet alle magazijnen aan of af SwitchAll(To) New SortKey Set SortKey="" For { Set SortKey=$O(Magazijn(SortKey)) Quit:SortKey="" If To="On" Set ($P(Magazijn(SortKey),D,2),$P(Magazijn(SortKey),D,3))=1 Else Set ($P(Magazijn(SortKey),D,2),$P(Magazijn(SortKey),D,3))=0 } Do WRITE^vhLIST(.LD) Set Modified=1 Quit ; Magazijnen ophalen in ^RES met de data uit ^EWREC("MAGAZIJN") Fetch(Magazijn) New ResRec,SortKey,MagazijnRec,Automatisch,Manueel Set Magazijn="" For { Set Magazijn=$O(^RES("EWORDS","PI","MAGAZIJN","D",Magazijn)) Quit:Magazijn="" Set ResRec=^RES("EWORDS","PI","MAGAZIJN","D",Magazijn),SortKey=$P(ResRec,"`") Set MagazijnRec=$G(^EWREC("MAGAZIJN",Magazijn)) Set:$P(MagazijnRec,D)="" $P(MagazijnRec,D)=1,Modified=1 Set:$P(MagazijnRec,D,2)="" $P(MagazijnRec,D,2)=1,Modified=1 Set Automatisch=+$P(MagazijnRec,D),Manueel=+$P(MagazijnRec,D,2) Set Magazijn(SortKey)=Magazijn_D_Automatisch_D_Manueel } Quit ; Bewaren van de data in ^EWREC("MAGAZIJN") Save(Magazijn) New SortKey,Rec,MagazijnRec,Automatisch,Manueel Set SortKey="" For { Set SortKey=$O(Magazijn(SortKey)) Quit:SortKey="" Set Rec=Magazijn(SortKey),Magazijn=$P(Rec,D),Automatisch=$P(Rec,D,2),Manueel=$P(Rec,D,3) Set MagazijnRec=$G(^EWREC("MAGAZIJN",Magazijn)),$P(MagazijnRec,D)=Automatisch,$P(MagazijnRec,D,2)=Manueel Set ^EWREC("MAGAZIJN",Magazijn)=MagazijnRec } Quit ; Is er nog voldoende tijd om orders automatisch door te sturen? CheckTijdsraming(Magazijn) New MagazijnRec,Automatisch,Tijd,AutoOff,MaxTijd,From,To,Subject,Body,Status Set Magazijn=$G(Magazijn,"E") ; Default EWMS If $D(^EWREC("MAGAZIJN",Magazijn)) { Set MagazijnRec=$G(^EWREC("MAGAZIJN",Magazijn)) Set Automatisch=$P(MagazijnRec,D),AutoOff=$P(MagazijnRec,D,3) If AutoOff,AutoOff<$H { ; Gisteren automatisch afgezet, mag dus terug opgezet worden Set (Automatisch,$P(MagazijnRec,D))=1,$P(MagazijnRec,D,3)="",^EWREC("MAGAZIJN",Magazijn)=MagazijnRec Do ResetAlleMagazijnen } If Automatisch,AutoOff<$H { ; Mag slechts een keer per dag afgezet worden Set Tijd=$P($G(^EWREC("DISP","W",Magazijn)),D,5) Set MaxTijd=$P(^RES("EWORDS","PI","MAGAZIJN","D",Magazijn),"`",3) If $P($H,",",2)+(Tijd/2)>MaxTijd { ; De tijdsraming komt voorbij de maximum tijd voor automatisch doorsturen Set $P(^EWREC("MAGAZIJN",Magazijn),D)=0 Set $P(^EWREC("MAGAZIJN",Magazijn),D,3)=$H Set From=##class(TECH.Context.RuntimeContext).Instance().GeefServerNaam()_"@VANHOECKE.BE" Set To=##class(TECH.Config.ConfigMgr).Instance().GetString("EWORDSM_AutomatischDoorsturen_MailTo") Set To=$$USERNAME^vhUSER(To,"@",1) Set Subject="Automatisch doorsturen orders" Set Body="Het automatisch doorsturen naar het magazijn "_$P(^RES("EWORDS","PI","MAGAZIJN","D",Magazijn),"`",2)_" is tijdelijk afgezet!!!" Set Status=$$SendMiniMail^vhLib(From,To,Subject,Body) } } } Quit ; Alle magazijnen terug activeren ResetAlleMagazijnen New Magazijn Set Magazijn="" For { Set Magazijn=$O(^EWREC("MAGAZIJN",Magazijn)) Quit:Magazijn="" Set $P(^EWREC("MAGAZIJN",Magazijn),D,1,2)="1\1" } Quit ; Controle of alle magazijnen voor een order beschikbaar zijn MagazijnBeschikbaar(ORDNr,AutoSend) New Context,OrderAPI,Order,Iterator,OrderLijn,KLNr,PRNr,Aantal,MagazijnBeschikbaar Set AutoSend=$G(AutoSend) Set Context = ##class(DOM.DomeinContext).Instance() Set OrderAPI = Context.GeefOrderAPI() Set Order=OrderAPI.GeefOrder(ORDNr) Set KLNr=##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantNummerVoorPartijID(Order.GeefKlantID()) Set Iterator = Order.GeefTypeOrderLijnIterator(##class(DOM.VKP.enu.OrderLijnType).Product()) Set MagazijnBeschikbaar=1 While Iterator.HasNext(),MagazijnBeschikbaar { Set OrderLijn=Iterator.Next() Set PRNr=OrderLijn.GeefProductID() Set Aantal=OrderLijn.GeefAantal() Set MagazijnBeschikbaar=$$MagazijnBeschikbaarVoorProduct(PRNr,KLNr,Aantal,AutoSend) } Quit MagazijnBeschikbaar ; Controle of het magazijn voor een product beschikbaar is MagazijnBeschikbaarVoorProduct(PRNr,KLNr,Aantal,AutoSend) New Magazijn, MagazijnBeschikbaar, Automatisch, Manueel Set KLNr = $Get(KLNr) Set Aantal = $Get(Aantal) Set AutoSend = $Get(AutoSend) Set MagazijnBeschikbaar = 1 Set Magazijn = $$SOFTV^EWORDSW(PRNr, KLNr, Aantal, "") If $Length(Magazijn), $Data(^EWREC("MAGAZIJN", Magazijn)) { Set Automatisch = $Piece(^EWREC("MAGAZIJN", Magazijn), D) Set Manueel = $Piece(^EWREC("MAGAZIJN", Magazijn), D, 2) Set MagazijnBeschikbaar = Manueel If MagazijnBeschikbaar, AutoSend Set MagazijnBeschikbaar = Automatisch } Quit MagazijnBeschikbaar