Index: EWORDS2.mac.rou =================================================================== diff -u -r61747 -r75040 --- EWORDS2.mac.rou (.../EWORDS2.mac.rou) (revision 61747) +++ EWORDS2.mac.rou (.../EWORDS2.mac.rou) (revision 75040) @@ -1,19 +1,34 @@ +#include Prod.Product EWORDS2 ;E'WMS Opbouw van een Consolidatie order [ 01/27/2003 9:34 AM ] ; BLDCONS(KLNr,MarkRef,CONSNr,VerzW,VerzDat,DOutTime,VerzZ,LevAdr,ChkBeletDone) ; Het order is gelockt door het oproepende programma ; @MarkRef bevat voor de verschillende Orders en OLUNrs het aantal (piece 1) voor het WMS en of er een BackOrder moet gekreeerd worden (piece 2). ; Het BackOrder mag een markering B dan is BOQty=OLQty-MarkedQty, of het mag het Backorder aantal zelf zijn. New ORDNr,OLNr,OLUNr,OLCnt,AutoCons,CredCnt,OLRec,Qty,BOQty,Sort,ManOpsl,BOLwk,Check,Rembours,MagHandeling - Lock +^ORDW("D",CONSNr) + + Quit:'$D(@MarkRef@("A")) + Quit:'$$LockAll(KLNr,CONSNr,MarkRef) ; Op voorhand alles of niets locken - PV 26/05/2023 + + Quit:$$IsReedsInORDW(KLNr,CONSNr,MarkRef) ; Controle of er door gelijktijdigheid van het manueel en automatisch doorsturen dezelfde orderlijnen werden geselecteerd - PV 13/09/2023 + + ;Lock +^ORDW("D",CONSNr) ; Consolidatie hoofding Set:'VerzDat VerzDat=+$H Set CONSRec="" Set $P(CONSRec,D,1)=KLNr Set $P(CONSRec,D,2)=VerzW Set $P(CONSRec,D,3)=DOutTime Set $P(CONSRec,D,4)=VerzZ - Set $P(CONSRec,D,5)=VerzDat + If (VerzW = "DD1"){ + If (##class(DOM.DomeinContext).Instance().GeefProjectSettingsAPI().DD1StockerenBijVRDIndienVroegerGeproduceerd()) { + Set $P(CONSRec,D,5) = VerzDat + } Else { + Set $P(CONSRec,D,5)= ##class(TECH.DateTime).BerekenWerkdag((+$H) , 1 ) + } + } else { + Set $P(CONSRec,D,5)=VerzDat + } Set $P(CONSRec,D,18)=$H ;Set $P(CONSRec,D,20)="W" ;Set $P(CONSRec,D,22)=$H @@ -23,8 +38,7 @@ Set (ORDNr,OLUNr)="" Set (OLCnt,AutoCons,CredCnt)=0 For Set ORDNr=$O(@MarkRef@("A",ORDNr)) Quit:ORDNr="" Do - .Lock +^KOD(KLNr,"F",ORDNr) - .Quit:$$ReedsDoorgestuurdOrderlijnen(CONSNr,.MarkRef) + .;Lock +^KOD(KLNr,"F",ORDNr) .Kill ^ORDW("AUTO",ORDNr) .For Set OLUNr=$O(@MarkRef@("A",ORDNr,OLUNr)) Quit:OLUNr="" Do ..Set OLNr=^ORD("IU",ORDNr,OLUNr) @@ -36,7 +50,9 @@ ..Set:$P(OLRec,D,3)>0&(BOQty<1) BOQty="" ; Picking ..Set:$P(OLRec,D,3)<0&(BOQty>-1) BOQty="" ; Terugname ..Set BOLwk=$P(@MarkRef@("A",ORDNr,OLUNr),D,4) - ..Set OLCnt=OLCnt+1,ManOpsl=$$OPSLMAN^PRODUKT2($P(OLRec,D,2)),MagHandeling=$$MAGHANDEL^PRODUKT2($P(OLRec,D,2)) + ..Set OLCnt=OLCnt+1 + ..Set ManOpsl=$$OPSLMAN^PRODUKT2($P(OLRec,D,2))||($$$ProductGet($P(OLRec,D,2),$$$WerkvloerSubMag)="RVGPLM") ; Revego plaatmateriaal + ..Set MagHandeling=$$MAGHANDEL^PRODUKT2($P(OLRec,D,2)) ..If Qty<0!($P(OLRec,D,14)["Z")!ManOpsl!'MagHandeling Do ; Terugname, ZONDER picking, opslag manueel, werkvloer of zonder magazijn handeling ...Do BLDAOL(KLNr,CONSNr,ORDNr,OLUNr,Qty) ...Set AutoCons=AutoCons+1 Set:Qty<0 CredCnt=CredCnt+1 @@ -58,19 +74,58 @@ Set Status=blOrderEvents.ConsolidatieOpgesteld(CONSNr) If Status'=1 Do WARN^vhTXTPOP($$ParseStatus^vhLib(Status),"Fout bij invullen bakken voor aventosproducten") Lock -^ORDW("D",CONSNr) + Set ^BONLog(CONSNr,+$H)=$LB("M",,$zdt($H,8)) Quit - -/// Geeft True (1) als er minstens 1 van de voor picking gemarkeerde lijnen reeds doorgestuurd was voor picking, en wel in een andere consolidatie/picking. -ReedsDoorgestuurdOrderlijnen(BehalveCONSNr, MarkRef) - New ORDNr,OLUNr,ReedsDoorgestuurd + +OrderLeverDatum(KLNr,ORDNr) ;LeverDatum 1e productlijn v Order + new LijnType,LevDatum,i,Rec + set i="", LevDatum="" + for Set i=$Order(^KOD(KLNr,"F",ORDNr,i)) Quit:(i="")!(LevDatum) Do ;indien productlijn dan heeft LevDatum een waarde gekregen en kunnen we uit de for + . Set Rec=^KOD(KLNr,"F",ORDNr,i) + . set LijnType = $p(Rec,"\",17) + . set:(LijnType="KF0") LevDatum=$p(^KOD(KLNr,"F",ORDNr,i),"\",25) + ;w !,$zdt($g(LevDatum),4) + Quit LevDatum + + +IsReedsInORDW(KLNr,CONSNr,MarkRef) + New ORDNr,OLUNr,IsReedsInORDW Set (ORDNr,OLUNr)="" - Set ReedsDoorgestuurd=0 + Set IsReedsInORDW=0 For Set ORDNr=$O(@MarkRef@("A",ORDNr)) Quit:ORDNr="" Do - .For Set OLUNr=$O(@MarkRef@("A",ORDNr,OLUNr)) Quit:OLUNr="" Do - ..Set:($G(^ORDW("IO",ORDNr,OLUNr),BehalveCONSNr)'=BehalveCONSNr) ReedsDoorgestuurd=1 - Quit ReedsDoorgestuurd - + . For Set OLUNr=$O(@MarkRef@("A",ORDNr,OLUNr)) Quit:OLUNr="" Do + . . Set:$D(^ORDW("IO",ORDNr,OLUNr)) IsReedsInORDW=1 + If IsReedsInORDW Do + . Set ORDNr="" + . For Set ORDNr=$O(@MarkRef@("A",ORDNr)) Quit:ORDNr="" Do + . . Kill ^ORDW("AUTO",ORDNr) ; verwijderen uit het automatisch doorsturen (wachten op volgende automatische vrijgave) + . . Lock -^KOD(KLNr,"F",ORDNr) ; LockAll werd hiervoor opgeroepen, dus unlock + . Lock -^ORDW("D",CONSNr) + + Quit IsReedsInORDW + +LockAll(KLNr,CONSNr,MarkRef) + New AllLocked,ORDNr,MemORDNr + Set AllLocked=1 + Lock +^ORDW("D",CONSNr):0 + Else Set AllLocked=0 + If AllLocked Do + . Set ORDNr="" + . For Set ORDNr=$O(@MarkRef@("A",ORDNr)) Quit:(ORDNr="")||('AllLocked) Do + . . Lock +^KOD(KLNr,"F",ORDNr):0 + . . Else Do ; unlock allen die reeds gelocked zijn + . . . Set AllLocked=0 + . . . Set MemORDNr=ORDNr + . . . Lock -^ORDW("D",CONSNr) + . . . Set ORDNr="" + . . . For Set ORDNr=$O(@MarkRef@("A",ORDNr)) Quit:ORDNr="" Quit:ORDNr=MemORDNr Do + . . . . Lock -^KOD(KLNr,"F",ORDNr) + . . . Set ORDNr="" + . . . For Set ORDNr=$O(@MarkRef@("A",ORDNr)) Quit:ORDNr="" Do ; verwijderen uit het automatisch doorsturen (wachten op volgende automatische vrijgave) + . . . . Kill ^ORDW("AUTO",ORDNr) + Quit AllLocked + BLDAOL(KLNr,CONSNr,ORDNr,OLUNr,Qty) ; Terugnames, zonder WMS en manueel krijgen onmiddellijk status afgewerkt. New OLNr,OLRec,PRNr,KPRNr,ZndSt,LinkPRNr @@ -120,23 +175,25 @@ Set $P(SubRec,D,2)="A" ; Status = Afgewerkt Set $P(SubRec,D,3)=Qty If $G(MoederPRNr)'=""&&(MoederPRNr'=PRNr) Set $P(SubRec,D,16)=$G(MoederPRNr) - Set:$$OPSLZONE^PRODUKT2(PRNr)=9 $P(SubRec,D,4)=Qty ; Werkvloerprodukt + Set:($$OPSLZONE^PRODUKT2(PRNr)=9)||($$$PRGet($$$WerkvloerSubMag)="RVGPLM") $P(SubRec,D,4)=Qty ; Werkvloerprodukt Set ^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SubOLNr)=SubRec Quit BLDOL(KLNr,CONSNr,ORDNr,OLUNr,Qty,BOQty,BOLwk) ; Verwerken van een orderlijn met eventuele opslitsing in verschillende kindproducten - New OLNr,OLRec,PRNr,KPRNr,ManOpsl,ManChk,LinkPRNr + New OLNr,OLRec,PRNr,KPRNr,ManOpsl,ManChk,LinkPRNr,AX Set OLNr=^ORD("IU",ORDNr,OLUNr) ; Misschien veranderd door BACKORD, daarom terug ophalen Set OLRec=^KOD(KLNr,"F",ORDNr,OLNr) Set PRNr=$P(OLRec,D,2) + Set AX=$P(OLRec,D,55,57) ; Ax :InventtransID, ConfigID, ItemID If 'PRNr Do ERROR^EWLOG("NOPROD") Quit ;Opbouw OL in ORDW Set OLRec="" Set $P(OLRec,D,1)=PRNr Set $P(OLRec,D,4)=Qty Set $P(OLRec,D,6)=BOQty Set $P(OLRec,D,7)=$S(BOLwk?5N:BOLwk,1:$$INTDATE^vhLib.DataTypes(BOLwk,"DW")) + Set $P(OLRec,D,12)=AX Set ^ORDW("D",CONSNr,"D",ORDNr,OLUNr)=OLRec Set ^ORDW("IO",ORDNr,OLUNr)=CONSNr ;