Index: EWORDSW.mac.rou =================================================================== diff -u -r3146 -r3489 --- EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 3146) +++ EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 3489) @@ -1,5 +1,7 @@ EWORDSW ;E'WMS Doorsturen van een Consolidatie order naar het WMS [ 11/29/2003 8:10 AM ] #Include BL.Derde.Kennis + #Include BL.Derde.KlantSpecifiek + #include Prod.Product ; CLEARONE(CONSNr) If $G(CONSNr)="" Do @@ -40,17 +42,28 @@ Do FIELD^vhScherm("EWORDSW","DOUTDATE") Set FP=2201 Write @F,@F1 - If %SC,$$^vhTXTPOP("EWORDSW","SENDALLWMS",,$$EXTDATE^vhDTyp(DOutDate))="Z" Do ProcessAll(DOutDate,1) + If %SC,$$^vhTXTPOP("EWORDSW","SENDALLWMS",,$$EXTDATE^vhDTyp(DOutDate))="Z" Do + . Set FP=2201 + . Write @F,@F1 + . Write !,"Halux",! + . Do ProcessAll(DOutDate,1,$$$KlantHalux) + . Set FP=2201 + . Write @F,@F1 + . Write !,"Wachten ... " + . H 20 + . Write "Andere",! + . Do ProcessAll(DOutDate,1) Quit -ProcessAll(DOutDate,WithWrite) +ProcessAll(DOutDate,WithWrite,LimKLNr) New CONSNr,FP,KLNr,R Set CONSNr="",FP=1001 Write:$G(WithWrite) @F For Set CONSNr=$O(^ORDW("D",CONSNr)) Quit:CONSNr="" Do . Set R=^ORDW("D",CONSNr) + . Set KLNr=$P(R,D,1) + . If $G(LimKLNr),KLNr'=LimKLNr Quit . Quit:$P(R,D,20)'="" Quit:+$P(R,D,3)>DOutDate - . Set KLNr=$P(R,D) . Write:$G(WithWrite) $J(CONSNr,8) . Do SEND(CONSNr) Quit @@ -70,7 +83,11 @@ Set DH="" Set OLCnt=0 Set (ORDNr,OLUNr,SoftV)="" - Do SORT(CONSNr,lbBevat,.Sort) + If $P(CONSRec,D,1)=$$$KlantHalux Do + . Do SORTHALUX(CONSNr,lbBevat,.Sort) + Else Do + . Do SORT(CONSNr,lbBevat,.Sort) + Do AanpassenDueOut(CONSNr,lbBevat) Set KenAnk=1 For Set ORDNr=$O(Sort(ORDNr)) Quit:ORDNr="" Do . For Set OLUNr=$O(Sort(ORDNr,OLUNr)) Quit:OLUNr="" Do @@ -104,6 +121,72 @@ Set:$$BevatTandem^FLOWCHK("L",CONSNr) lbBevat=lbBevat_$LB("TANDEM") Quit lbBevat +AanpassenDueOut(CONSNr,lbBevat) + New Omz,OmzFakt,KLNr,DOut + ;Aanpassen van de DueOutTime volgens magazijn + Set KLNr=$P(^ORDW("D",CONSNr),D) + Set Omz=$P($G(^KKAAP(KLNr,0,0,0,0)),D) + Set OmzFakt=$S(Omz>250000:100,Omz>25000:100,1:0) + Set DOut=$P(^ORDW("D",CONSNr),D,3) + Set:OmzFakt>1 $P(DOut,",",2)=$P(DOut,",",2)-(10*60) ; Grote klanten worden voorgetrokken met 10 min. + Set:$LF(lbBevat,"ORGALUX") $P(DOut,",",2)=$P(DOut,",",2)-(10*60) ; Orgalux orders voortrekken met 10 min. + Set $P(^ORDW("D",CONSNr),D,3)=DOut ; sinds uglypicking actief is niet meer nodig + + Set:$P(DOut,",",2)<0 $P(^ORDW("D",CONSNr),D,3)=$P(DOut,",") ; PV 15-04-2011 - blijkbaar wordt soms de DueOut verlaagd met x min als deze dan op nul staat dan mag deze niet negatief gaan + Quit + +SORTHALUX(CONSNr,lbBevat,Sort) + New SortT1,SortT2,ORDNr,OLUNr,Gewicht,Aantal,OLRec,OLNr,PRNr,HG,SortKey,SortCnt,Omz,OmzFakt,DOut,DefMag,Mag,GroepSleutel,GroepVolume,FlowCntrlCnt,FlowCntrl + Set KLNr=$P(^ORDW("D",CONSNr),D) + Set blProdSelect=##class(BL.Prod.Select).Instantiate() + + Set (ORDNr,OLUNr,SOLNr)="" + ; Eerste sortering: + ; Someren van de gewichten per paar (groepsleutel) + ; Binnen een groepsleutel per order + 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) + ...Set Aantal=$P(SOLRec,D,3) + ...Set GroepSleutel=$LG(##class(Prod.Kenmerk.DataDefinitie).Get("OEI",PRNr,"Sleutel")) + ...If GroepSleutel="" Set GroepSleutel="*" + ...Set Verpak=$$$PRGet($$$GrootVerpakking) + ...Set Verpak=Aantal\$S(Verpak:Verpak,1:1) + ...If Verpak<1 Set Verpak=1 + ...Set SoftV=$P(SOLRec,D,13) + ...Set:SoftV'?1N SoftV=$$SOFTV(PRNr,KLNr,Aantal,lbBevat) ; Indien niet op voorhand gegroepeerd + ...Set SortT1(SoftV,GroepSleutel)=$S(GroepSleutel="*":1,1:$G(SortT1(SoftV,GroepSleutel))+Verpak) + ...Set SortT1(SoftV,GroepSleutel,ORDNr,OLUNr,PRNr)="" + ; Tweede sortering: + ; De hoofdgroep sorteren volgens volume + Set (SoftV,GroepSleutel)="" + For Set SoftV=$O(SortT1(SoftV)) Quit:SoftV="" Do + . For Set GroepSleutel=$O(SortT1(SoftV,GroepSleutel)) Quit:GroepSleutel="" Do + .. Set GroepVolume=SortT1(SoftV,GroepSleutel) + .. Set SortT2(SoftV,GroepVolume,GroepSleutel)="" + ; + ;Opbouw van de sorteerlocal die kan gebruikt worden bij de verdere verwerking door SOLCACHE + Kill Sort + Set FlowCntrlCnt=100 + Set (SoftV,GroepVolume,GroepSleutel,ORDNr,OLUNr)="" + For Set SoftV=$O(SortT2(SoftV)) Quit:SoftV="" Do + .Set SortCnt=200 + .For Set GroepVolume=$O(SortT2(SoftV,GroepVolume),-1) Quit:GroepVolume="" Do + ..For Set GroepSleutel=$O(SortT2(SoftV,GroepVolume,GroepSleutel)) Quit:GroepSleutel="" Do + ...If GroepSleutel="*" Set FlowCntrl=900 + ...Else Set FlowCntrl=$I(FlowCntrlCnt) + ...Do + ....For Set ORDNr=$O(SortT1(SoftV,GroepSleutel,ORDNr)) Quit:ORDNr="" Do + .....For Set OLUNr=$O(SortT1(SoftV,GroepSleutel,ORDNr,OLUNr)) Quit:OLUNr="" Do + ...... Set PRNr="" + ...... For Set PRNr=$O(SortT1(SoftV,GroepSleutel,ORDNr,OLUNr,PRNr)) Quit:PRNr="" Do + ....... Set Sort(ORDNr,OLUNr,PRNr)=FlowCntrl + Quit + SORT(CONSNr,lbBevat,Sort) New SortT1,SortT2,ORDNr,OLUNr,Gewicht,Aantal,OLRec,OLNr,PRNr,HG,SortKey,SortCnt,Omz,OmzFakt,DOut,DefMag,Mag Set KLNr=$P(^ORDW("D",CONSNr),D) @@ -144,13 +227,8 @@ .. Set Gewicht=SortT1(SoftV,HG) .. Set Gewicht=$S(Gewicht'>10:10,Gewicht'>50:50,Gewicht'>100:100,Gewicht'>250:250,Gewicht'>500:500,1:99999) ; Afronden van het gewicht volgens gewichtklassen .. Set SortT2(SoftV,Gewicht,HG)="" + ; - ;Aanpassen van de DueOutTime volgens magazijn - Set DOut=$P(^ORDW("D",CONSNr),D,3) - Set:OmzFakt>1 $P(DOut,",",2)=$P(DOut,",",2)-(10*60) ; Grote klanten worden voorgetrokken met 10 min. - Set:$LF(lbBevat,"ORGALUX") $P(DOut,",",2)=$P(DOut,",",2)-(10*60) ; Orgalux orders voortrekken met 10 min. - ;Set $P(^ORDW("D",CONSNr),D,3)=DOut ; sinds uglypicking actief is niet meer nodig - ; ;Opbouw van de sorteerlocal die kan gebruikt worden bij de verdere verwerking door SOLCACHE Set FirstList="10480;10479;2538;90302;104752;82858;89510;89511;90263;9563;92264;76804;31577;10111;9913;19114;92491;71580;71581;89994;90267;55778;88893;19142;90265;9885;9886;82388;76364;76365;19134;10095;11544;19135;10096;11545;90308;19142;86104;89998;55774;" Kill Sort @@ -224,7 +302,7 @@ For Set SubOLNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SubOLNr)) Quit:SubOLNr="" Do . Set SubRec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SubOLNr) . Quit:$P(SubRec,D,2)'="" ; Reeds verwerkt (doorgestuurd), terugname, manueel of zonder WMS - . Set SOLSoftV=$P(Sort(ORDNr,OLUNr,$P(SubRec,D,1)),D,2) + . 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 .. Do SOLCACHE(CONSNr,ORDNr,OLUNr,SubOLNr,.C)