Index: EWORDSW.mac.rou =================================================================== diff -u -r59978 -r73512 --- EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 59978) +++ EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 73512) @@ -3,12 +3,80 @@ #Include BL.Derde.KlantSpecifiek #include Prod.Product ; - + +RESETONE(CONSNr) ; alleen de OBJT lijnen van een Picking (SOFTV = 'V' + If $G(CONSNr)="" Do + .Read "CONSOLIDATIE NR : ",CONSNr + Quit:CONSNr'?6N + Quit:'$D(^ORDW("D",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 SOLNr="" + . . Set IsObjt=0 + . . For Set SOLNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr)) Quit:SOLNr="" Do + . . . Set Rec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr) + . . . If $P(Rec,D,13)="V" Do + . . . . Set $P(Rec,D,2)="W" ;W + . . . . Set $P(Rec,D,4)="" ; blanko + . . . . Set ^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr)=Rec + . . . . Set IsObjt=1 + . . Set Rec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) + . . If IsObjt Do + . . . Set $P(Rec,D,2)="W" ;W + . . . Set $P(Rec,D,3)="" + . . . Set $P(Rec,D,5)="" + . . . Set ^ORDW("D",CONSNr,"D",ORDNr,OLUNr)=Rec + . Set Rec=^ORDW("D",CONSNr) + . Set $P(Rec,D,20)="W" + . Set $P(Rec,D,21)="" + . Set ^ORDW("D",CONSNr)=Rec + Set ^ORDW("D",CONSNr,"S","V") ="W" + Quit + +CLEARONEOBJT(CONSNr) + If $G(CONSNr)="" Do + .Read "CONSOLIDATIE NR : ",CONSNr + Quit:CONSNr'?6N + Quit:'$D(^ORDW("D",CONSNr)) + Set Rec=^ORDW("D",CONSNr) + ;if $P(Rec,D,20)'="W" Write "Status staat niet op 'W', niet doorgestuurd" + ;Quit:$P(Rec,D,20)'="W" + 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 Rec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) + . . ;Quit:$P(Rec,D,8)'="V" + . . Set SOLNr="" + . . For Set SOLNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr)) Quit:SOLNr="" Do + . . . Set Rec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr) + . . . Quit:$P(Rec,D,13)'="V" + . . . Set $P(Rec,D,2)="" + . . . Set $P(Rec,D,4)="" + . . . Set ^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr)=Rec + . . Set Rec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) + . . ;Set $P(Rec,D,2)="" + . . ;Set $P(Rec,D,3)="" + . . ;Set $P(Rec,D,5)="" + . . Set ^ORDW("D",CONSNr,"D",ORDNr,OLUNr)=Rec + . Set Rec=^ORDW("D",CONSNr) + . ;Set $P(Rec,D,20)="" + . ;Set $P(Rec,D,21)="" + . Set ^ORDW("D",CONSNr)=Rec + ;Kill ^ORDW("D",CONSNr,"S","V") + Do SEND(CONSNr) + Quit + CLEARONE(CONSNr) If $G(CONSNr)="" Do .Read "CONSOLIDATIE NR : ",CONSNr Quit:CONSNr'?6N Quit:'$D(^ORDW("D",CONSNr)) + Set Rec=^ORDW("D",CONSNr) + if $P(Rec,D,20)'="W" Write "Status staat niet op 'W', niet doorgestuurd" + Quit:$P(Rec,D,20)'="W" Set ORDNr="" For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do . Set OLUNr="" @@ -31,8 +99,15 @@ Kill ^ORDW("D",CONSNr,"S") Do SEND(CONSNr) Quit + Quit + +SENDOBJT ; Orders voor vandaag klaar zetten voor OBJT + Set Q="K" D ^cA604 + Quit:$G(^EWREC("P","NOSEND")) + Set DOutDate=+$H + Do ProcessAll(DOutDate,0) + Quit - SENDALL New R,DOutDate,CONSNr,KLNr Set DOutDate=+$H @@ -72,7 +147,7 @@ ; SEND(CONSNr) ; Opbouw van Consolidatie en doorsturen naar E'WMS ; Locals gekend tussen de verschillende routines ; DH,ORDCache - New R,DH,ORDNr,OLNr,OLUNr,OLCnt,TerugCnt,OLRec,Qty,BOQty,ORDCache,Sort,VerzW,DOut,IsOrgal,IsTxtOrga,IsTxtTAORIndeling,IsTAORIndeling,IsComm,SoftV,IsKaderD,KenAnk + New R,DH,ORDNr,OLNr,OLUNr,OLCnt,TerugCnt,OLRec,Qty,BOQty,ORDCache,Sort,VerzW,DOut,IsOrgal,IsTxtOrga,IsTxtTAORIndeling,IsTAORIndeling,IsComm,SoftV,IsKaderD,KenAnk,OBJTSender Quit:$G(^EWREC("P","NOSEND")) Lock +^ORDW("D",CONSNr) Set CONSRec=^ORDW("D",CONSNr),VerzW=$P(CONSRec,D,2),DOut=$P(CONSRec,D,3) @@ -90,6 +165,7 @@ . Do SORT(CONSNr,.Sort) Do AanpassenDueOut(CONSNr,lbBevat) Set KenAnk=1 + Set OBJTSender=##class(OBJTimpl.WMSOrder.ZendPicklijst).%New() ;OBJT For Set ORDNr=$O(Sort(ORDNr)) Quit:ORDNr="" Do . For Set OLUNr=$O(Sort(ORDNr,OLUNr)) Quit:OLUNr="" Do .. If 'DH Do @@ -102,6 +178,7 @@ . Set KenAnk=0 If DH Do ; Er zijn er doorgestuurd . Do CLOSE^EWRECS(DH) + Do OBJTSender.VerstuurPicklijnen() ;OBJT Set CONSRec=^ORDW("D",CONSNr) Set:$P(CONSRec,D,20)="" $P(CONSRec,D,20)="W" ; Alleen als nog niet is doorgestuurd, dit voor Terugnames en zonder WMS Set $P(CONSRec,D,22)=$H @@ -128,15 +205,14 @@ Set Verzendwijze=$P($P($P(^ORDW("D",CONSNr),D,2),"`"),";") If Verzendwijze?1"AF"1E { - Set $P(DOut,",",2)=1200 - } - ElseIf (Verzendwijze?1"OD"1N)&&(SubMagazijnen["E") + ;Set $P(DOut,",",2)=1200 ; OBJT - niet nodig vermits reeds opgenomen bij creatie van ORDW + } ElseIf (Verzendwijze?1"OD"1N)&&(SubMagazijnen["E") { - If Verzendwijze="OD1" Set $P(DOut,",",2)=21600 ; 6 uur - If Verzendwijze="OD2" Set $P(DOut,",",2)=25200 ; 7 uur - If Verzendwijze="OD3" Set $P(DOut,",",2)=28800 ; 8 uur - If Verzendwijze="OD4" Set $P(DOut,",",2)=32400 ; 9 uur - If Verzendwijze="OD5" Set $P(DOut,",",2)=36000 ; 10 uur + ;If Verzendwijze="OD1" Set $P(DOut,",",2)=21600 ; 6 uur ;OBJT - niet meer nodig, verschillende waves + ;If Verzendwijze="OD2" Set $P(DOut,",",2)=25200 ; 7 uur + ;If Verzendwijze="OD3" Set $P(DOut,",",2)=28800 ; 8 uur + ;If Verzendwijze="OD4" Set $P(DOut,",",2)=32400 ; 9 uur + ;If Verzendwijze="OD5" Set $P(DOut,",",2)=36000 ; 10 uur } If ##class(DOM.DomeinContext).Instance().GeefProjectSettingsAPI().IsTranssmartActive() @@ -146,14 +222,15 @@ Set PostCode=$P($G(^ORDW("D",CONSNr,"A")),"\",6) If (($E(PostCode,1,2)="NL") && ("1,7,8,9"[$E(PostCode,4))) || ($E(PostCode,1,1)="L") { - Set $P(DOut,",",2)=$P(DOut,",",2)-(60*60) ; Een uur vroeger voor het hoge Noorden NL of Luxemburg + ;OBJT - niet meer nodig, verschillende waves reeds opgenomen DOM.VKP.Verzendwijze + ;Set $P(DOut,",",2)=$P(DOut,",",2)-(60*60) ; Een uur vroeger voor het hoge Noorden NL of Luxemburg } } } - + Set:OmzFakt>1 $P(DOut,",",2)=$P(DOut,",",2)-(4*60) ; Grote klanten worden voorgetrokken met 4 min. - Set:$LF(lbBevat,"ORGALUX") $P(DOut,",",2)=$P(DOut,",",2)-(10*60) ; Orgalux orders voortrekken met 10 min. - Set:$L(SubMagazijnen)=1 $P(DOut,",",2)=$P(DOut,",",2)-(5*60) ; picking uit slechts 1 submagazijn wordt voorgetrokken met 5 min + ;Set:$LF(lbBevat,"ORGALUX") $P(DOut,",",2)=$P(DOut,",",2)-(10*60) ; Orgalux orders voortrekken met 10 min. + ;Set:$L(SubMagazijnen)=1 $P(DOut,",",2)=$P(DOut,",",2)-(5*60) ; picking uit slechts 1 submagazijn wordt voorgetrokken met 5 min Set:$$IsAlpnachOfHerzog(CONSNr) $P(DOut,",",2)=$P(DOut,",",2)-(20*60) ; picking voor AlpNach of Herzog (klant van SFS) wordt voorgetrokken met 20 min Do INFO^EWLOG($T(DUEOUT)) Set $P(^ORDW("D",CONSNr),D,3)=DOut ; sinds uglypicking actief is niet meer nodig @@ -200,6 +277,7 @@ For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Do .For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do ..Set OLRec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) + ..Quit:$P(OLRec,D,2)'="" ; Reeds verwerkt (doorgestuurd), terugname, manueel of zonder WMS ..For Set SOLNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr)) Quit:SOLNr="" Do ...Set SOLRec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr) ...Set PRNr=$P(SOLRec,D,1) @@ -305,6 +383,7 @@ BLDOL(KLNr,CONSNr,ORDNr,OLUNr,lbBevat,SoftV) + ; SoftV : via .Local ; Verwerken van een orderlijn met eventuele opslitsing in verschillende kindproducten New OLNr,OLRec,SubOLNr,SubRec,PRNr,KPRNr,OLCache,Txt,SOLSoftV,OLSoftV @@ -316,8 +395,9 @@ . Quit:$P(SubRec,D,2)'="" ; Reeds verwerkt (doorgestuurd), terugname, manueel of zonder WMS . Set SOLSoftV=$P($G(Sort(ORDNr,OLUNr,$P(SubRec,D,1))),D,2) . Set:SOLSoftV="" SOLSoftV=$$SOFTV($P(SubRec,D,1),$P(^ORDW("D",CONSNr),D,1),$P(SubRec,D,3),lbBevat) - . If (SOLSoftV="E")!(SOLSoftV?1N) Do ; voor EWMS + . If (SOLSoftV?1(1"E",1N,1"V")) Do ; voor EWMS ;OBJT .. Do SOLCACHE(CONSNr,ORDNr,OLUNr,SubOLNr,.C) + .. Set C("SOFTV")=SOLSoftV ;OBJT .. Set $P(SubRec,D,11)=$G(C("SORTKODE")) . Set:OLSoftV'[SOLSoftV OLSoftV=OLSoftV_SOLSoftV ; Lijn . Set:SoftV'[SOLSoftV SoftV=SoftV_SOLSoftV ; Consolidatie @@ -328,7 +408,7 @@ . Merge Txt=C("OLTEKST") . Set Txt=$O(Txt(""),-1) . Kill C("OLTEKST") - . Do:(SOLSoftV="E")!(SOLSoftV?1N) PUT(.C,"OLTEKST",.Txt) ; voor EWMS + . Do:(SOLSoftV?1(1"E",1N,1"V")) PUT(.C,"OLTEKST",.Txt) ; voor EWMS ;OBJT Set OLRec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) Set $P(OLRec,D,2)="W" Set $P(OLRec,D,8)=OLSoftV @@ -344,25 +424,31 @@ .Set BlockId=$P(R,D,18) .Quit:$P(BlockId,";",2)="P" Quit:$P(BlockId,";",4)'["W" .Set Txt=Txt+1,Txt(Txt)=$P(R,D,5)_"~" - Do:KenAnk KennisAnker(KLNr,,.Txt,1) + ;Do:KenAnk KennisAnker(KLNr,,.Txt,1) ; OBJT PV 27/04 doorsturen crashes voor sommige producten en OBJT heeft dit niet nodig Merge C=ORDCache Set C="O01" Set C("ORDNR")=ORDNr Do:Txt PUT(.C,"ORDTEKST",.Txt) Quit PUT(C,Ref,Txt) - Do GETWRAP^vhBIGEDIT("Txt",40,.Txt,"G","~","") - For Txt=1:1:Txt Set Txt(Txt)=$P(Txt(Txt),"`",5),Txt(Txt)=Txt(Txt)_$J("",40-$L(Txt(Txt))) - For Txt=1:1:Txt Do - .If Txt#4=1 Do - ..If Txt>1 Do - ...Do PUT^EWRECS(DH,"C") - ...Set:$D(C("PRNR")) C("PRNR")="" Set:$D(C("MOEDERPRNR")) C("MOEDERPRNR")="" - ...Set:$D(C("AANTAL")) C("AANTAL")="" - ..Set C(Ref)="" - .Set C(Ref)=C(Ref)_Txt(Txt) - Do:Txt PUT^EWRECS(DH,"C") + If $G(C("SOFTV"))="V" ;OBJT + { + Set C(Ref)=Txt + Do OBJTSender.VoegtoePicklijn(.C) + } Else { + Do GETWRAP^vhBIGEDIT("Txt",40,.Txt,"G","~","") + For Txt=1:1:Txt Set Txt(Txt)=$P(Txt(Txt),"`",5),Txt(Txt)=Txt(Txt)_$J("",40-$L(Txt(Txt))) + For Txt=1:1:Txt Do + .If Txt#4=1 Do + ..If Txt>1 Do + ...Do PUT^EWRECS(DH,"C") + ...Set:$D(C("PRNR")) C("PRNR")="" Set:$D(C("MOEDERPRNR")) C("MOEDERPRNR")="" + ...Set:$D(C("AANTAL")) C("AANTAL")="" + ..Set C(Ref)="" + .Set C(Ref)=C(Ref)_Txt(Txt) + Do:Txt PUT^EWRECS(DH,"C") + } Quit ORDCACHE(KLNr,CONSNr,ORDNr,IsAndereControleWijze,C) ; Opbouw van de cache voor de orderhoofding @@ -379,13 +465,13 @@ Set C("DUEOUTTIME")=$P(ConsRec,D,3) ;Set:$$DIFFTIME^vhLib.DataTypes($H,C("DUEOUTTIME"))'>0 C("DUEOUTTIME")=($P(C("DUEOUTTIME"),",")-1)_","_$P(C("DUEOUTTIME"),",",2) ; Bij afhaling de dueout nog vervroegen, hierdoor worden afhalingen die later dan 17:00 worden doorgestuurd toch nog voorgetrokken door EWMS Set C("VERZENDW")=$$VerzendWijzeCompact($P(ConsRec,D,2),IsAndereControleWijze) - Set C("KLNM")=C("VERZENDW")_" "_C("KLNM") + ;Set C("KLNM")=C("VERZENDW")_" "_C("KLNM") Set VrzZone=$P(ConsRec,D,4) Set:VrzZone'?6N VrzZone=$O(^RES("EWORDS","PI","VERZENDZONE","D","")) Set C("VERZENDZONE")=VrzZone Set C("TAAL")=$S($P(^KKL(KLId,0),D,9)="F":"F",1:"N") Set AdrRec=$G(^ORDW("D",CONSNr,"A")) - If $P(AdrRec,D) Do ; Levadres in order + If $Tr($P(AdrRec,D),"\")="" Do ; Levadres in order .Set C("LEVADRNR")=$$LEVADRNR^KLANT(KLNr,ORDNr) Else Do ; Hoofdadres gebruiken .Set AdrRec=^KKL(KLId,0) @@ -394,10 +480,11 @@ Set C("LEVADRTOENM")=$P(AdrRec,D,3) Set C("LEVADRSTR")=$P(AdrRec,D,5) Set C("LEVADRGEM")=$E($P(AdrRec,D,6)_" "_$P(AdrRec,D,7),1,30) - If ";9365;2671;3814;"[(";"_KLNr_";") Do ; klant Haefele en 'New SobelWood' -> 1 order / 1 bon - . Set C("LEVADRTOENM")=C("LEVADRSTR") - . Set C("LEVADRSTR")=C("LEVADRGEM") - . Set C("LEVADRGEM")=$$CommRef(KLNr,CONSNr) + ; PV 04/07/2022 : deze code is niet meer van toepassing omdat de stickers door het EWMS werden afgedrukt in het verre verleden. + ;If ";9365;2671;3814;"[(";"_KLNr_";") Do ; klant Haefele en 'New SobelWood' -> 1 order / 1 bon + ;. Set C("LEVADRTOENM")=C("LEVADRSTR") + ;. Set C("LEVADRSTR")=C("LEVADRGEM") + ;. Set C("LEVADRGEM")=$$CommRef(KLNr,CONSNr) Set Txt="" If $P(ORDRec,D,16)'="" Set Txt=Txt_";Beloofd op "_$P(ORDRec,D,16) Set:Txt'="" C("ORDTEKST")=$E(Txt,2,999) @@ -440,9 +527,9 @@ ; anders te werk gaan qua controle bij dit soort orders. VerzendWijzeCompact(VerzendW,IsAndereControleWijze) Quit:'$G(IsAndereControleWijze) VerzendW - Set:$L(VerzendW)=3 $E(VerzendW,2)="" - Set $E(VerzendW,3)="+" - Quit VerzendW + ;Set:$L(VerzendW)=3 $E(VerzendW,2)="" + ;Set $E(VerzendW,3)="+" + Quit VerzendW _ "+" HeeftBonAndereControleWijze(CONSNr) Quit ($$ISORGAL^FLOWCHK("L",CONSNr) || $$HeeftTAORIndeling^FLOWCHK("L",CONSNr)) @@ -515,11 +602,12 @@ ..Set BlockId=$P(R,D,18) ..Quit:$P(BlockId,";",2)'="P" Quit:$P(BlockId,";",4)'["W" ..Set Cnt=Cnt+1,C("OLTEKST",Cnt)=$P(R,D,5)_"~" - .Do KennisAnker(KLNr,PRNr,.Txt,1) + .;Do KennisAnker(KLNr,PRNr,.Txt,1) ; OBJT PV 27/04 doorsturen crashes voor sommige producten en OBJT heeft dit niet nodig .If $G(Txt) For Txt=1:1:Txt Set Cnt=Cnt+1,C("OLTEKST",Cnt)=Txt(Txt)_"~" Quit KennisAnker(KLNr,PRNr,Local,InclGeneral) + Quit ; OBJT PV 27/04 doorsturen crashes voor sommige producten en OBJT heeft dit niet nodig Set lbKenAnk=##class(BL.Derde.Kennis.Kennis).GetIDsToPopup(KLNr,.varErrStr,$LB($$$adMagazijnPicking),$S($G(PRNr):$LB(PRNr),1:""),$G(CUserId,$G(QU(1))),,,$G(InclGeneral)) If $LL(lbKenAnk) For Kill KenAnk Set KenAnk=$LI(lbKenAnk) Quit:KenAnk="" Do Quit:'$LL(lbKenAnk) . Set lbKenAnk=$LI(lbKenAnk,2,99)