EWORDS6 ;E'WMS Automatisch markeren voor orderpicking [ 10/28/2003 10:26 AM ] ; WMS verwerking en eventueel doorsturen naar Egemin software indien voor vandaag SendWMS(ORDNr) New %J,I,R,KLNr,PRNr,Aantal,OLUNr,LeverDag,CONSNr,VerzDat,DOutDate,DOutTime,VerzW,VerzZ,LevAdr,ChkBeletDone,IsVoorVandaagOfMorgen,IsVoorVandaag,ORDNrs,CumulORDNr,WaitORDNrs New LandCode,PostCode Set IsVoorVandaagOfMorgen=$$IsVoorVandaagOfMorgen(ORDNr) If IsVoorVandaagOfMorgen { ; Het is voor vandaag of voor morgen Set ORDNrs=$$Cumul(ORDNr) Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set WaitORDNrs=$$WachtendeOrders(KLNr) For I=$L(WaitORDNrs,";"):-1:1 { Set CumulORDNr=$P(WaitORDNrs,";",I) If ORDNrs[CumulORDNr Else If $$CheckCumul(ORDNr,CumulORDNr) Set ORDNrs=ORDNrs_";"_CumulORDNr Else Continue Set $P(WaitORDNrs,";",I)=$P(WaitORDNrs,";",I+1,99) } Quit:'$$Lock(ORDNrs) Set IsVoorVandaag=IsVoorVandaagOfMorgen=1 Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) For I=1:1:$L(ORDNrs,";") { Set CumulORDNr=$P(ORDNrs,";",I) Quit:'CumulORDNr Set OLNr=100 For { Set OLNr=$O(^KOD(KLNr,"F",CumulORDNr,OLNr)) Quit:'OLNr Set R=^KOD(KLNr,"F",CumulORDNr,OLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),OLUNr=$P(R,D,15),LeverDag=$P(R,D,25) Continue:'PRNr Set R=Aantal_D_D_LeverDag Set ^HULP(%J,KLNr,"M","A",CumulORDNr,OLUNr)=R } } Set CONSNr=$$GETNUM^FLOW("KUL","KU1") ; Tijdelijk Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) Set VerzW=$$DEFAULT^KLVERZW(,KLNr,ORDNr) Set VerzZone="" Set DOutDateTime=$S(IsVoorVandaag:+$H,1:+$$CALCDATE^vhDTyp($H,"A",1))_","_blVerzendWijze.DueOutPickingTime() Set VerzDat=blLeveringsTermijn.GetVroegsteLeverDag(+DOutDateTime) Set LevAdr=^KOD(KLNr,"F",ORDNr,3) Do BLDCONS^EWORDS2(KLNr,$NA(^HULP(%J,KLNr,"M")),CONSNr,$P(VerzW,";"),VerzDat,DOutDateTime,VerzZone,LevAdr,.ChkBeletDone) ; Creatie suborderlijnen If $$WMSIsActief(),IsVoorVandaag Do SEND^EWORDSW(CONSNr) ; Indien voor vandaag -> doorsturen Kill ^HULP(%J) For I=1:1:$L(ORDNrs,";") Set CumulORDNr=$P(ORDNrs,";",I) Kill ^ORDW("AUTO",CumulORDNr) Do UnLock(ORDNrs) } Quit ; WMS is actief? WMSIsActief() New WMSIsActief Set WMSIsActief=+$G(^EWREC("P","NOSEND")) Quit 'WMSIsActief ; AutoSend is actief? 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 Quit AutoSendIsActief ; Controle of het order (en alle eventueel gelinkte orders) voor dezelfde leverdag zijn. CheckLeverDag(ORDNr) New LeverDagOk,LeverDagen Set LeverDagen=$$GetLeverDagen(ORDNr),LeverDagOk=0 If $L(LeverDagen),$LL(LeverDagen)=1 Set LeverDagOk=1 ; Er zijn leverdagen en er is er maar een Quit LeverDagOk ; Bepaal de leverdagen van een groep gelinkte orders GetLeverDagen(ORDNr) New I,R,KLNr,ORDNrs,lbLeverDagen,LeverDagen,LeverDag Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set ORDNrs=$$GetOrderLink(ORDNr) ; Ophalen gelinkte orders For I=1:1:$L(ORDNrs,";") Set ORDNr=$P(ORDNrs,";",I) Set:ORDNr ORDNrs(ORDNr)="" Set ORDNr="" For { Set ORDNr=$O(ORDNrs(ORDNr)) Quit:ORDNr="" Set lbLeverDagen=$$GetLeverDagen^FLOWORD5(KLNr,ORDNr) For I=1:1:$LL(lbLeverDagen) Set LeverDag=$LI(lbLeverDagen,I),LeverDagen(LeverDag)="" } Set (lbLeverDagen,LeverDag)="" For Set LeverDag=$O(LeverDagen(LeverDag)) Quit:LeverDag="" Set lbLeverDagen=lbLeverDagen_$LB(LeverDag) Quit lbLeverDagen GetPickDatum(ORDNr) New R,KLNr,blVerzendWijze,blLeveringsTermijn,LeverDag Set PickDatum="" If $$CheckLeverDag(ORDNr) { Set LeverDag=$LI($$GetLeverDagen(ORDNr)) Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) Set PickDatum=blLeveringsTermijn.GetLaatstePickingsTijdstip(LeverDag) } Quit PickDatum ; Is een order voor vandaag, voor morgen of andere dag ; 0 -> andere dag ; 1 -> vandaag ; 2 -> morgen (volgende arbeidsdag) IsVoorVandaagOfMorgen(ORDNr) New VandaagOfMorgen,PickDatum Set PickDatum=$$GetPickDatum(ORDNr),VandaagOfMorgen=0 If +PickDatum=+$H Set VandaagOfMorgen=$S($P(PickDatum,",",2)'>7200:1,$$DIFFTIME^vhDTyp($H,PickDatum,"M")'<0:1,1:2) Else If +PickDatum=$$CALCDATE^vhDTyp(,"A",1) Set VandaagOfMorgen=2 Quit VandaagOfMorgen ; Deze routine verwerkt alle orders verzameld in de wachtrij door 'FetchAutoSend' ; Opgestartom de 15 minuten AutoSend 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:'$$CheckAutoSend(ORDNr) Set Aangemaakt=^ORDW("AUTO",ORDNr),AanmaakDatum=$P(Aangemaakt,","),AanmaakTijdstip=$P(Aangemaakt,",",2) Set:$$DIFFTIME^vhDTyp(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) } } } } } Quit ; ********************************** CheckAutoSend(ORDNr) New Check,fc Set Check=$$SendWMSStatus(ORDNr)="A" ; Status i.v.m. het doorsturen is automatisch Set:Check Check=$$IsVoorVandaagOfMorgen(ORDNr) Set:Check Check=$$OrderGesloten(ORDNr) Set:Check Check='$$IsContractOfAfroep(ORDNr) Set:Check Check='$$IsTerugname(ORDNr) Set:Check Check='$$InWMS(ORDNr) Set:Check Check=$$CheckStock(ORDNr) Set:Check Check=$$MagazijnBeschikbaar(ORDNr) If Check { ; Indien de magazijnen beschikbaar zijn, de forcast herberekenen en de beschikbaarheid terug controleren Set fc=$$FETCHSOM^EWSTAT() Do CheckTijdsraming^EWORDSM() Set Check=$$MagazijnBeschikbaar(ORDNr) } If Check { Do:'$$CheckKredietwaardig(ORDNr) MarkeerKredietProbleemInORDNr^EWORDS3(ORDNr,"A") Set Check=$$CheckBoekhouding(ORDNr) } 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,D) Set SendWMSStatus=$P(^KOD(KLNr,"F",ORDNr,1),D,26) If SendWMSStatus'="W" { Set:SendWMSStatus="" SendWMSStatus=$E($P(^KKL(^KK1(KLNr),2),D,8)) Set:SendWMSStatus'="M" SendWMSStatus="A" } Quit SendWMSStatus ; Do orders moeten gesloten zijn OrderGesloten(ORDNr) New R,KLNr,ORDNrs,OrderGesloten Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set OrderGesloten=$P(^KOD(KLNr,"F",ORDNr,1),D,22) Quit OrderGesloten ; Contract- en afroeporders niet toegestaan IsContractOfAfroep(ORDNr) New R,KLNr,ORDNrs,IsContractOfAfroep,OrderType Set ORDNrs=$$GetOrderLink(ORDNr) ; Alle glinkte orders Set KLNr=$P(^KO1(ORDNr,"F"),D) For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Set R=^KOD(KLNr,"F",ORDNr,1),OrderType=$P(R,D,25) Set IsContractOfAfroep=OrderType="C" ; Contract Set:'IsContractOfAfroep IsContractOfAfroep=OrderType="A" ; Afroep Quit:IsContractOfAfroep } Quit IsContractOfAfroep ; Terugnames niet toegestaan IsTerugname(ORDNr) New ORDNrs,IsTerugname Set ORDNrs=$$GetOrderLink(ORDNr) ; Alle glinkte orders For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Set IsTerugname=$$ISTERUGN^FLOWORD5(ORDNr) Quit:IsTerugname } Quit IsTerugname ; De orders mogen nog niet in het WMS zitten InWMS(ORDNr) New ORDNrs,InWMS Set ORDNrs=$$GetOrderLink(ORDNr) ; Alle glinkte orders For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Set InWMS=$D(^ORDW("IO",ORDNr)) Quit:InWMS } Quit InWMS ; Boekhoudkundige controle? CheckBoekhouding(ORDNr) New Check Set Check=$$CheckRembours(ORDNr) Set:Check Check=$$CheckVooruitBetaling(ORDNr) Set:Check Check=$$CheckDubieus(ORDNr) Set:Check Check=$$CheckKredietwaardig(ORDNr) Quit Check ; Controle rembours CheckRembours(ORDNr) New R,KLNr,Check,Rembours,SendWMS Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set SendWMS=$P(^KKL(^KK1(KLNr),2),D,8) Set Check=$E(SendWMS,$L(SendWMS)) ; Geen vrijgave door boekhouding nodig Set:'Check R=^KKL(^KK1(KLNr),3),Rembours=$P(R,D),Check='Rembours Quit Check ; Controle vooruitbetaling CheckVooruitBetaling(ORDNr) New R,KLNr,Check,VooruitBetaling,SendWMS Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set SendWMS=$P(^KKL(^KK1(KLNr),2),D,8) Set Check=$E(SendWMS,$L(SendWMS)) ; Geen vrijgave door boekhouding nodig Set:'Check R=^KKL(^KK1(KLNr),3),VooruitBetaling=$P(R,D,2),Check='VooruitBetaling Quit Check ; Controle dubieus CheckDubieus(ORDNr) New R,KLNr,Check,Dubieus,SendWMS Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set SendWMS=$P(^KKL(^KK1(KLNr),2),D,8) Set Check=$E(SendWMS,$L(SendWMS)) ; Geen vrijgave door boekhouding nodig Set:'Check R=^KKL(^KK1(KLNr),3),Dubieus=$P(R,D,8),Check='Dubieus Quit Check ; Controle kredietwaardig? CheckKredietwaardig(ORDNr) New R,KLNr,Check,SendWMS Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set SendWMS=$P(^KKL(^KK1(KLNr),2),D,8) Set Check=$E(SendWMS,$L(SendWMS)) ; Geen vrijgave door boekhouding nodig Set:'Check Check=+$$WAARDIG^KREDIET(KLNr) Quit Check ; De voorraad van alle gelinkte orders voldoende? CheckStock(ORDNr) New ORDNrs,InStock Set ORDNrs=$$GetOrderLink(ORDNr) ; Alle glinkte orders For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Set InStock=$$CheckStockOneOrder(ORDNr) Quit:'InStock } Quit $G(InStock,1) ; Controle voorraad van een order CheckStockOneOrder(ORDNr) New R,KLNr,OLNr,PRNr,Aantal,InStock,StockUpd,TOENr Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D),OLNr=100 For { Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Set R=^KOD(KLNr,"F",ORDNr,OLNr),PRNr=$P(R,D,2),Aantal=$P(R,D,3),TOENr=$P(R,D,27) Continue:'PRNr Set TOENr=$P(R,D,27) If TOENr Set InStock=0 Quit ; Kom-link Set StockUpd=$P(R,D,14)'["S" Set:StockUpd StockUpd=$P(R,D,14)'["Z" If StockUpd,'$$MAGHANDEL^PRODUKT2(PRNr) Set StockUpd=0 If 'StockUpd Set InStock=0 ; Zonder stockupdate niet automatisch Else Set InStock=$$CheckStockOneProduct(PRNr,Aantal) Quit:'InStock } Quit $G(InStock,1) ; Voorraadcontrole van een product CheckStockOneProduct(PRNr,Aantal) New R,InStock,PraStock,WVTekort,LevTerm,BufferW,WeekDat,WVStock,WVRes,GemWVK Set R=$O(^KPR(PRNr,"J")),WVTekort="" Set LevTerm=6,BufferW=$P(^KPR(PRNr,1),D,17) If $E(R)="J" { Set R=^KPR(PRNr,R),LevTerm=$P(R,D,7) Set WeekDat=(LevTerm+BufferW)*7+$H Set WVStock=$$CV2MAG^MRP(PRNr,$P($G(^PRSTOCK("D",PRNr)),D,5)) Set:WVStock<0 WVStock=0 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)) } Quit $G(InStock,1) ; Zijn alle magazijnen beschikbaar voor alle gelinkte orders? MagazijnBeschikbaar(ORDNr,AutoSend) New ORDNrs,MagazijnBeschikbaar Set ORDNrs=$$GetOrderLink(ORDNr) ; Alle glinkte orders For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Set MagazijnBeschikbaar=$$MagazijnBeschikbaar^EWORDSM(ORDNr,$G(AutoSend,1)) Quit:'MagazijnBeschikbaar } Quit $G(MagazijnBeschikbaar,1) ; ********************************** ; Ophalen gelinkte orders GetOrderLink(ORDNr) New ORDNrs Set ORDNrs=$$GetOrderLink^KFO(ORDNr) Set ORDNrs(ORDNr)="" For I=1:1:$L(ORDNrs,";") Set ORDNr=$P(ORDNrs,";",I) Set:ORDNr ORDNrs(ORDNr)="" Set (ORDNrs,ORDNr)="" For { Set ORDNr=$O(ORDNrs(ORDNr)) Quit:ORDNr="" Set ORDNrs=ORDNrs_";"_ORDNr } Set $E(ORDNrs)="" Quit ORDNrs ; De orders voor vandaag of morgen opzoeken in ^KOD en in de wachtrij plaatsen voor 'AutoSend' ; Elke minuut opgestart FetchAutoSend New Set Q="K",D="\",U=";",Horolog=$H If $$AutoSendIsActief() { Lock +^ORDW("AUTO"):30 Quit:'$T Set KLNr=0 For { Set KLNr=$O(^KOD(KLNr)) Quit:KLNr="" Set ORDNr="" For { Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Continue:$D(^ORDW("AUTO",ORDNr)) Set ORDNrs=$$GetOrderLink(ORDNr) Continue:'$$CheckAutoSend(ORDNr) Continue:'$$Lock(ORDNrs) Do PutAutoSend(ORDNr,Horolog) Do UnLock(ORDNrs) } } } Quit ; Invullen voor automatisch zenden PutAutoSend(ORDNr,Horolog) New I,ORDNrs Set ORDNrs=$$GetOrderLink(ORDNr),Horolog=$G(Horolog,$H) ; Alle glinkte orders For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) If ORDNr,'$D(^ORDW("AUTO",ORDNr)) Set ^ORDW("AUTO",ORDNr)=Horolog } Quit ; Verwijderen voor automatisch zenden DelAutoSend(ORDNr) New I,ORDNrs Set ORDNrs=$$GetOrderLink(ORDNr) ; Alle glinkte orders For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) If ORDNr Kill ^ORDW("AUTO",ORDNr) } Quit ; Invullen voor automatisch zenden bij het verlaten van een order (FLOWORD) PutViaFLOWORD(ORDNr) New KLNr,Horolog,IsVoorVandaag,Check,Warning,Manueel,TxtLoc,ButLoc,SendWMSStatus,fc,MarkeerKredietProbleemInORDNr Set Horolog=$G(^ORDW("AUTO",ORDNr)) Do DelAutoSend(ORDNr) If $$AutoSendIsActief() { Set KLNr=$P($G(^KO1(ORDNr,"F")),D) Quit:'KLNr Quit:'$D(^KOD(KLNr,"F",ORDNr)) ; Order bestaat niet meer, bon reeds opgemaakt Quit:'$$OrderGesloten(ORDNr) ; Order niet gesloten Quit:$$InWMS(ORDNr) ; Order reeds in het WMS Set IsVoorVandaag=$$IsVoorVandaagOfMorgen(ORDNr)=1 If IsVoorVandaag { Set MarkeerKredietProbleemInORDNr=0 Set SendWMSStatus=$$SendWMSStatus(ORDNr) Set Check=SendWMSStatus="A" ; Status i.v.m. het doorsturen is automatisch If 'Check { Set Warning="Status is "_$S(SendWMSStatus="W":"wachtende",1:"manueel") Set Manueel=SendWMSStatus'="W" } If Check { Set Check='$$IsContractOfAfroep(ORDNr) Set:'Check Warning="Contract of afroep." } If Check { Set Check='$$IsTerugname(ORDNr) Set:'Check Warning="Terugname." } If Check { Set Check=$$CheckStock(ORDNr) Set:'Check Warning="Onvoldoende voorraad.",Manueel=1 } If Check { Set Check=$$MagazijnBeschikbaar(ORDNr) If Check { ; Indien de magazijnen beschikbaar zijn, de forcast herberekenen en de beschikbaarheid terug controleren Set fc=$$FETCHSOM^EWSTAT() Do CheckTijdsraming^EWORDSM() Set Check=$$MagazijnBeschikbaar(ORDNr) } Set:'Check Warning="Magazijn niet beschikbaar.",Manueel=$$MagazijnBeschikbaar(ORDNr,0) } If Check { Set Check=$$CheckRembours(ORDNr) Set:'Check Warning="Klant op rembours.",Manueel=1 } If Check { Set Check=$$CheckVooruitBetaling(ORDNr) Set:'Check Warning="Klant op vooruitbetaling.",Manueel=1 } If Check { Set Check=$$CheckDubieus(ORDNr) Set:'Check Warning="Klant dubieus.",Manueel=1 } If Check { Set Check=$$CheckKredietwaardig(ORDNr) Set:'Check Warning="Kredietlimiet overschreden.",(Manueel,MarkeerKredietProbleemInORDNr)=1 } If Check { Set:Horolog="" Horolog=$$CALCTIME^vhDTyp($h,15,"M") Do PutAutoSend(ORDNr,Horolog) } If 'Check { Set TxtLoc(1)="Order "_ORDNr_" is voor "_$$EXTDATE^vhDTyp()_" (vandaag)" Set TxtLoc(2)=Warning Set:$G(Manueel) TxtLoc(3)="EWMS markeren orderpicking manueel verwerken." Set ButLoc(1)=$S($G(Manueel):"Manueel&M",1:"Ok") Set:$G(Manueel) ButLoc(2)="Annuleer&A*" If $$WILD^vhTXTPOP("C;C","","TxtLoc","ButLoc",2)="M" { Do:MarkeerKredietProbleemInORDNr MarkeerKredietProbleemInORDNr^EWORDS3(ORDNr,"B") Do EWMS^FLOWORD("M") } } } } Quit ; ********************************** ; Cumuleren van orders voor eenzelfde klant Cumul(ORDNr) New R,KLNr,ORDNrs,CumulORDNr Set ORDNrs=ORDNr,R=^KO1(ORDNr,"F"),KLNr=$P(R,D),CumulORDNr="" If '$$EenOPerB(ORDNr) { For { Set CumulORDNr=$O(^ORDW("AUTO",CumulORDNr)) Quit:CumulORDNr="" Set R=^KO1(CumulORDNr,"F") Continue:$P(R,D)'=KLNr If ORDNrs'[CumulORDNr,$$CheckCumul(ORDNr,CumulORDNr) Set ORDNrs=ORDNrs_";"_CumulORDNr } } Quit ORDNrs CheckCumul(ORDNr,CumulORDNr) New Cumul Set Cumul=$$LevAdr(ORDNr,CumulORDNr) Set:Cumul Cumul=$$LevVoorw(ORDNr,CumulORDNr) Set:Cumul Cumul=$$FactAdr(ORDNr,CumulORDNr) Set:Cumul Cumul=$$Munt(ORDNr,CumulORDNr) Set:Cumul Cumul=$$NettoBruto(ORDNr,CumulORDNr) Set:Cumul Cumul=$$Export(ORDNr,CumulORDNr) Set:Cumul Cumul=$$OrderType(ORDNr,CumulORDNr) Set:Cumul Cumul=$$Orgalux(ORDNr,CumulORDNr) Set:Cumul Cumul=$$VerpakType(ORDNr,CumulORDNr) Set:Cumul Cumul=$$VerzendWijze(ORDNr,CumulORDNr) Set:Cumul Cumul=$$Transport(ORDNr,CumulORDNr) Quit Cumul ; Een order per bon per factuuur EenOPerB(ORDNr) New R,KLNr Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set R=^KKL(^KK1(KLNr),1),EenOPerB=$P(R,D,18) Set:EenOPerB=3 EenOPerB=0 ; Meerdere orders per bon, een bon per factuur Quit ''EenOPerB ; Leveringsadres gelijk? LevAdr(ORDNr,CumulORDNr) New R,KLNr,LevAdr,CumulLevAdr Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set LevAdr=$G(^KOD(KLNr,"F",ORDNr,3)) Set CumulLevAdr=$G(^KOD(KLNr,"F",CumulORDNr,3)) Quit $P(LevAdr,D,2,7)=$P(CumulLevAdr,D,2,7) ; Levringsvoorwaarde glijk? LevVoorw(ORDNr,CumulORDNr) New R,KLNr,LevVoorw,CumulLevVoorw Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set LevVoorw=$P(^KOD(KLNr,"F",ORDNr,1),D,21) Set CumulLevVoorw=$P(^KOD(KLNr,"F",CumulORDNr,1),D,21) Quit LevVoorw=CumulLevVoorw ; Facturatiesadres gelijk? FactAdr(ORDNr,CumulORDNr) New R,KLNr,FactAdr,CumulFactAdr Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set FactAdr=$P(^KOD(KLNr,"F",ORDNr,1),D,6) Set CumulFactAdr=$P(^KOD(KLNr,"F",CumulORDNr,1),D,6) Quit FactAdr=CumulFactAdr ; Facturatiemunt gelijk? Munt(ORDNr,CumulORDNr) New R,KLNr,Munt,CumulMunt Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set Munt=$P(^KOD(KLNr,"F",ORDNr,1),D,18) Set CumulMunt=$P(^KOD(KLNr,"F",CumulORDNr,1),D,18) Quit Munt=CumulMunt ; NettoBruto gelijk? NettoBruto(ORDNr,CumulORDNr) New R,KLNr,NettoBruto,CumulNettoBruto Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set NettoBruto=$P(^KOD(KLNr,"F",ORDNr,1),D,27) Set CumulNettoBruto=$P(^KOD(KLNr,"F",CumulORDNr,1),D,27) Quit NettoBruto=CumulNettoBruto ; Exportcode gelijk? Export(ORDNr,CumulORDNr) New R,KLNr,Export,CumulExport Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set Export=$P(^KOD(KLNr,"F",ORDNr,1),D,14) Set CumulExport=$P(^KOD(KLNr,"F",CumulORDNr,1),D,14) Quit Export=CumulExport ; Ordertype gelijk? OrderType(ORDNr,CumulORDNr) New R,KLNr,OrderType,CumulOrderType Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set R=^KOD(KLNr,"F",ORDNr,1),OrderType=$P(R,D,25)_$P(R,D,29) Set R=^KOD(KLNr,"F",CumulORDNr,1),CumulOrderType=$P(R,D,25)_$P(R,D,29) Quit OrderType=CumulOrderType ; Orgaluxcode orders steeds afzonderlijk? Orgalux(ORDNr,CumulORDNr) New CumulOrgalux Set CumulOrgalux='$$ISORGAL^FLOW("O",ORDNr) Set:CumulOrgalux CumulOrgalux='$$ISORGAL^FLOW("O",CumulORDNr) Quit CumulOrgalux ; Verpaktype gelijk? VerpakType(ORDNr,CumulORDNr) New VerpakType,CumulVerpakType Set VerpakType=$$ORDER^VERPAK(ORDNr) Set CumulVerpakType=$$ORDER^VERPAK(CumulORDNr) Quit VerpakType=CumulVerpakType ; Verzendwijze gelijk? VerzendWijze(ORDNr,CumulORDNr) New VerzendWijze,CumulVerzendWijze Set VerzendWijze=$$DEFAULT^KLVERZW(,KLNr,ORDNr) Set CumulVerzendWijze=$$DEFAULT^KLVERZW(,KLNr,CumulORDNr) Quit $P(VerzendWijze,";")=$P(CumulVerzendWijze,";") ; Transport gelijk? Transport(ORDNr,CumulORDNr) New R,KLNr,Transport,CumulTransport Set R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Set Transport=$P(^KOD(KLNr,"F",ORDNr,1),D,12) Set CumulTransport=$P(^KOD(KLNr,"F",CumulORDNr,1),D,12) Quit Transport=CumulTransport ; ********************************** Lock(ORDNrs) New %TC,R,KLNr,ORDNr For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Set:'$D(KLNr) R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Lock +^KOD(KLNr,"F",ORDNr):0 Set %TC=$T Quit:'%TC } If '%TC{ ; Niet alle orders kunnen gelockd worden For I=1:1:I-1 { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Lock -^KOD(KLNr,"F",ORDNr) } } Quit %TC UnLock(ORDNrs) New R,KLNr,ORDNr For I=1:1:$L(ORDNrs,";") { Set ORDNr=$P(ORDNrs,";",I) Continue:'ORDNr Set:'$D(KLNr) R=^KO1(ORDNr,"F"),KLNr=$P(R,D) Lock -^KOD(KLNr,"F",ORDNr) } Quit WachtendeOrders(KLNr) New ORDNr,ORDNrs Set (ORDNr,ORDNrs)="" For { Set ORDNr=$O(^KOD(KLNr,"F",ORDNr)) Quit:ORDNr="" Continue:'$$OrderGesloten(ORDNr) Continue:$$IsContractOfAfroep(ORDNr) Continue:$$IsTerugname(ORDNr) Continue:$$InWMS(ORDNr) Continue:'$$CheckStock(ORDNr) If '$$CheckKredietwaardig(ORDNr) Do MarkeerKredietProbleemInORDNr^EWORDS3(ORDNr,"A") Continue Continue:'$$CheckBoekhouding(ORDNr) Set:$$SendWMSStatus(ORDNr)="W" ORDNrs=ORDNrs_";"_ORDNr } Set $E(ORDNrs)="" Quit ORDNrs ; Invullen markering voor leveringsperformantie MarkForLeveringsPerformantie(ORDNr,Code) New Context,OrderAPI,Order,Iterator,Lijn,KLNr,PRNr,LeverTermijn,LevPerfCode Set Context = ##class(DOM.DomeinContext).Instance() Set OrderAPI = Context.GeefOrderAPI() Set Order=OrderAPI.GeefOrder(ORDNr) Set KLNr=Order.GeefKlantNr() Set Iterator = Order.GeefTypeOrderLijnIterator(##class(DOM.OV.enu.OrderLijnType).Product()) While Iterator.HasNext() { Set OrderLijn=Iterator.Next() Set PRNr=OrderLijn.GeefPRNr() Set LeverTermijn=OrderLijn.GeefLeverTermijn() ; cfr CSC Set LevPerfCode=OrderLijn.GeefLevPerfCode() ; cfr CSC If LevPerfCode="",LeverTermijn,LeverTermijn<$H ;Set OrderLijn.SetLevPerfCode()=Code ; cfr CSC } Quit