Index: EWORDS.mac.rou =================================================================== diff -u -r48168 -r75040 --- EWORDS.mac.rou (.../EWORDS.mac.rou) (revision 48168) +++ EWORDS.mac.rou (.../EWORDS.mac.rou) (revision 75040) @@ -142,8 +142,9 @@ If Optie'["A",Optie'["T" Kill ^HULP(%J) Quit ; + FETCH(KLNr,ORDNr,Optie) - New R,Count,OLNr,MarkOrd,OLUNr,EwmsVerw,VerzW,Lock,VerzZ,GewGemWv,PRNr,Beloofd,IsTBX,StockNiveauService + New R,Count,OLNr,MarkOrd,OLUNr,EwmsVerw,VerzW,Lock,VerzZ,GewGemWv,PRNr,Beloofd,IsTBX,StockNiveauService,VkpKinderen New LevTerm,BufferW,Week,DynTheoS,KomOrd,StockUpd,FysStock,PraStock,TeoStock,Aantal,ResWMS,Order,OrderStaatVolledigBijVanHoecke Set KLNr=$G(KLNr),ORDNr=$G(ORDNr),Optie=$G(Optie),VerzW="",(Beloofd,IsTBX)=0 If ORDNr Set KLNr=$P(^KO1(ORDNr,"F"),D),VerzW=$$DEFVERZW(KLNr,ORDNr),Beloofd=$$Beloofd(KLNr,ORDNr),IsTBX=$$ISTBX^FLOWCHK("O",ORDNr) @@ -187,7 +188,11 @@ ...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)) + ...If $$GeenMaatWerkCheck(PRNr) Do ;het maatwerk is gemaakt, niet meer op de kinderen controleren + ....Set VkpKinderen = "0\0\0" + ...else Do + ....Set VkpKinderen = "0\0\0" ;$$VerkoopKinderen^PRODUKT4(PRNr,WeekDat) ;reeds door AX gedaan. + ...Set WVRes=$$CV2MAG^MRP(PRNr,$P(VkpKinderen,"\",2)) ...Set WVTekort=$S(KLNr=$$$KlantHalux:"",WVStock " _ $Get(VerzW)) // We gaan nagaan of er backorderlijnen moeten gesplitst worden. Indien de 2de piece is ingevuld moet die gebruikt worden als BO aantal. // Achteraf maken we die piece leeg zodat de rest van de code zijn werk blijft doen. Set OLU = "" Set PickingOpdrachtInfoLijst = ##class(%ListOfDataTypes).%New() + Set ORDNr="" For { - Set OLU=$O(^HULP(%J,KLNr,"M","A",ORDNr,OLU)) - Quit:OLU="" - - New LeverDatum, AantalVoorBackOrder, Aantal - Set LijnRec = ^HULP(%J,KLNr,"M","A",ORDNr,OLU) - Set AantalVoorBackOrder = $Piece(LijnRec,"\",2) - Set LeverDatum = $Piece(LijnRec, "\", 3) // gebruik de ingevulde LevWk - - If (AantalVoorBackOrder > 0) { - // gebruik de BoLevWk indien ingevuld - If $$$Not($Piece(LijnRec, "\", 4) = "") { - Set LeverDatum = $Piece(LijnRec, "\", 4) - } + Set ORDNr=$Order(^HULP(%J,KLNr,"M","A",ORDNr)) + Quit:(""=ORDNr) + Set KKLNode3=^KKL(^KK1(KLNr),3) + Set Rembours=$P(KKLNode3,"\") + If (Rembours && ($$$Not(##class(CHUI.VKP.OrderIngave.OrderControle).%New().IsOrderVolledigGemarkeerd(%J,KLNr,ORDNr)))) { + Set PopupDetail = "Omdat het remboursbedrag van deelleveringen niet kan berekend worden, is het niet toegelaten om orders gedeeltelijk door te sturen voor picking. " + Set PopupDetail = PopupDetail_"U kan in AX het order splitsen in 2 en dan 1 van die delen doorsturen voor picking." + Set OnvolledigOrderPopup = $$Boodschap^vhTXTPOP(PopupDetail) + Kill ^HULP(%J, KLNr, "M", "A") + Quit + } Else { + For { + Set OLU=$Order(^HULP(%J,KLNr,"M","A",ORDNr,OLU)) + Quit:OLU="" - Do SPLITOLN^FLOWORD6(,ORDNr,^ORD("IU",ORDNr,OLU),AantalVoorBackOrder,LeverDatum,,.ReturnLocal) - Set $Piece(LijnRec,"\",2)="" - Set $Piece(^KOD(KLNr,"F",ORDNr,^ORD("IU",ORDNr,ReturnLocal("NewOLUNr"))),"\",53) = 1 - Set ^HULP(%J,KLNr,"M","A",ORDNr,OLU) = LijnRec + New LeverDatum, AantalVoorBackOrder, Aantal + Set LijnRec = ^HULP(%J,KLNr,"M","A",ORDNr,OLU) + Set AantalVoorBackOrder = $Piece(LijnRec,"\",2) + Set LeverDatum = $Piece(LijnRec, "\", 3) // gebruik de ingevulde LevWk + + If (AantalVoorBackOrder > 0) { + // gebruik de BoLevWk indien ingevuld + If $$$Not($Piece(LijnRec, "\", 4) = "") { + Set LeverDatum = $Piece(LijnRec, "\", 4) + } + + Do SPLITOLN^FLOWORD6(,ORDNr,^ORD("IU",ORDNr,OLU),AantalVoorBackOrder,LeverDatum,,.ReturnLocal) + Set $Piece(LijnRec,"\",2)="" + Set $Piece(^KOD(KLNr,"F",ORDNr,^ORD("IU",ORDNr,ReturnLocal("NewOLUNr"))),"\",53) = 1 + Set ^HULP(%J,KLNr,"M","A",ORDNr,OLU) = LijnRec + } + + Set Aantal = $Piece(LijnRec, "\", 1) + + // ^HULP data, aangemaakt v��r aanroepen van SAVE(), bijhouden in PickingOpdrachtInfoLijst + Do PickingOpdrachtInfoLijst.Insert(##class(BL.Legacy.EWORDS.PickingOpdrachtInfo).%New(Aantal, LeverDatum, ORDNr, OLU)) + } } - - Set Aantal = $Piece(LijnRec, "\", 1) - - // ^HULP data, aangemaakt v��r aanroepen van SAVE(), bijhouden in PickingOpdrachtInfoLijst - Do PickingOpdrachtInfoLijst.Insert(##class(BL.Legacy.EWORDS.PickingOpdrachtInfo).%New(Aantal, LeverDatum, ORDNr, OLU)) } - // Alle bestaande ^HULP-nodes voor opgegeven KlantNummer en OrderNummer verwijderen - Kill ^HULP(%J, KLNr, "M", "A", ORDNr) + Kill ^HULP(%J, KLNr, "M", "A") - If 'DOutTime do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("DOutTime mag niet null zijn")) + If $$$Not(DOutTime) do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("DOutTime mag niet null zijn")) - Set LevAdr=^HULP(%J,KLNr,"C","LA") + Set LevAdr = ^HULP(%J,KLNr,"C","LA") Set FilterIterator = ##class(TECH.ListIterator).%New(##class(BL.Legacy.EWORDS.Save).GeefFilters()) While (FilterIterator.HasNext()) { @@ -533,32 +587,35 @@ While (PickingOpdrachtInfoIterator.HasNext()) { Set PickingOpdrachtInfo = PickingOpdrachtInfoIterator.Next() Set ^HULP(%J, KLNr, "M", "A", PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer()) = PickingOpdrachtInfo.GeefData() + Do ##class(vhLib.Logger).%New("SAVE^EWORDS").Debug("Lijn registreren in ^HULP", "OrderLijnNummer='"_PickingOpdrachtInfo.GeefOrderLijnNummer()_"'") } - - Do BLDCONS^EWORDS2(KLNr,$NA(^HULP(%J,KLNr,"M")),CONSNr,$P(VerzW,";"),VerzDat,DOutDate_","_DOutTime,VerzZ,LevAdr,.ChkBeletDone) ; Creatie suborderlijnen + + Do ##class(vhLib.Logger).%New("SAVE^EWORDS").Debug("Start opmaken pickingopdracht", "BLCONS voor "_ CONSNr _ "met VerzW " _ VerzW ) + + Do BLDCONS^EWORDS2(KLNr,$Name(^HULP(%J,KLNr,"M")),CONSNr,$Piece(VerzW,";"),VerzDat,DOutDate_","_DOutTime,VerzZ,LevAdr,.ChkBeletDone) ; Creatie suborderlijnen Do STORE^LOG("ORDW", CONSNr, "O", ##class(BL.Legacy.EWORDS.Save).GeefOrderNummers(CONSNr)) - Set ChkBeletDone=$G(ChkBeletDone) + Set ChkBeletDone = $Get(ChkBeletDone) Do VERWERK^EWORDSS(CONSNr) ; Eventueel opsplitsen in groepen If $D(^ORDW("D",CONSNr)) { ; Kan bij terugname niet meer bestaan Do ShowKennisAnker^EWORDS5(KLNr,CONSNr,1) Do:$$ChkTRANSPORT(CONSNr) TRANSPORT(CONSNr) - Set R=^ORDW("D",CONSNr) + Set R = ^ORDW("D",CONSNr) - Quit:$P(R,D,20)="K" Quit:$P(R,D,20)="B" Quit:$P(R,D,20)="C" Quit:ChkBeletDone="B" + Quit:$Piece(R,D,20)="K" Quit:$Piece(R,D,20)="B" Quit:$Piece(R,D,20)="C" Quit:ChkBeletDone="B" - Set:ChkBeletDone="" Check=$$CHECK^EWORDS3(CONSNr,1),Rembours=$P(Check,D,2) + Set:ChkBeletDone="" Check=$$CHECK^EWORDS3(CONSNr,1),Rembours=$Piece(Check,D,2) If ChkBeletDone="",'Check!Rembours Do BELET^EWORDS3(CONSNr) Quit Quit:'$$MagazijnBeschikbaar(CONSNr) - Set Send=$S($G(DOutSend)="L":0,1:1) + Set Send=$Select($Get(DOutSend)="L":0,1:1) If Send,DOutDate>$H { - Set Send=$S(DOutSend="V":1,1:"") + Set Send=$Select(DOutSend="V":1,1:"") Set:Send="" Send=$$^vhTXTPOP("EWORDS","SENDWMS",,$$EXTNUM^vhLib.DataTypes(CONSNr,0,".",0),$$EXTDATE^vhLib.DataTypes(DOutDate))="V" } @@ -583,6 +640,7 @@ } Quit Ok + ; ; Controle van de facturatiemunt CHKMUNT(%J,KLNr,NoAsk) @@ -784,6 +842,7 @@ .Set:X'?.N sEr="Foutieve numerieke ingave" .Set:X'>0&$L(X) sEr=$S(Leveren'>0:"",1:"Minimum 1") .Set:X>FysStock sEr="Maximum "_FysStock_" (fys stock)" + .Set:(X>Leveren)&&(Leveren>0) sEr="Aantal mag niet groter zijn dan orderaantal "_Leveren_" !" Else Do .New SLFaktor .Set SLFaktor=Faktor @@ -828,6 +887,8 @@ If $L($G(VerzendWijze)) Do . Do SETVERZW(KLNr,,VerzW) . Set GewenstePickDatum = $piece(sdVerzendWijze,D,2) + . ; onderstaande lijn niet meer gebruiken zie [ict-5848] + . ;If VerzendWijze?1(1"DD1",1"DI1") Set GewenstePickDatum=$$GetPickDatum^EWORDS6(ORDNr) ; aangepast PV 18/01/2022 - voortrekken toelaten met het behouden van de gewenste verzenddatum. In comment 04/04/23 vanwege PV . Do VulInVerzendWijzeInHoedjeHulp(KLNr,ORDNr, GewenstePickDatum,VerzW) . Do DISPLAY^vhScherm("EWORDSH",,,,"VERZWIJZE;GERAAPT;VERZZONE;VERZDATUM") Else DO MANMODVERZW @@ -837,7 +898,7 @@ New blLeveringsTermijn,blVerzendWijze,IsVoorVandaag,DOutDateTime,VerzDat,LaatstePickingTijdstip,sdVerzendWijze set sdVerzendWijze=^HULP(%J,KLNr,"V") ; kijken wat er in de temp global zit Do INITDOMVKP^FLOWORD2(KLNr,ORDNr) - Set DueOutTime = blLeveringsTermijn.blVerzendWijze.DueOutPickingTime() + Set DueOutTime = blLeveringsTermijn.GetDueOutPickingTime() If (+GewenstePickDatum = ##class(TECH.Context).Instance().GeefDateTimeAPI().CurrentDate()) { Set IsVoorVandaag = (##class(BL.Legacy.EWORDS6).PickingVoorVandaagVolgendeArbeidsdagOfAndereDag(ORDNr)=1) Set GewenstePickDatum = $S(IsVoorVandaag:+$H,1:+$$CALCDATE^vhLib.DataTypes($H,"A",1)) @@ -850,7 +911,7 @@ Set $P(sdVerzendWijze,D,5) = blLeveringsTermijn.GetVroegsteLeverDag(+LaatstePickingTijdstip) Set ^HULP(%J,KLNr,"V")=sdVerzendWijze Set ^HULP(%J,"V","V")=sdVerzendWijze - + Quit MANMODVERZW @@ -911,7 +972,7 @@ Quit VerzZ ; DEFVERZW(KLNr,ORDNr) - New I,R,Default,Kriteria,VerzW,DagNr + New I,R,Default,Kriteria,VerzW,DagNr,DagNrVoorwerken Set Default=$$DEFAULT^KLVERZW(,$G(KLNr),$G(ORDNr)) Merge Kriteria=^HULP(%J,"S","O") Set R="`"_$G(Kriteria("VERZ")) @@ -920,12 +981,15 @@ . For Set VerzW=$O(^RES("KLANT","PI","VERZENDWIJZE","D",VerzW)) Quit:$E(VerzW,1,2)'="OD" If $E(VerzW,3)?.N,R'[("`"_VerzW_";"_DagNr) Set R=R_"`"_VerzW_";"_DagNr . Set $E(R)="",Kriteria("VERZ")=R Set VerzW="",DagNr=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"A",1),"DWN") + Set DagNrVoorwerken=$$EXTDATE^vhLib.DataTypes($$CALCDATE^vhLib.DataTypes($H,"A",2),"DWN") If $L($G(Kriteria("VERZ"))) For I=1:1:$L(Default,"`") Do Quit:$L(VerzW) .Quit:"`"_Kriteria("VERZ")_"`"'[("`"_$P(Default,"`",I)_"`") .Set VerzW=$P(Default,"`",I) If VerzW="",$L(Default,"`")=1 Set VerzW=Default - If VerzW="" For I=1:1:$L(Default,"`") If $P($P(Default,"`",I),";",2)=DagNr Set VerzW=$P(Default,"`",I) Quit - Set:VerzW="" VerzW="OD"_";"_DagNr + If VerzW="" For I=1:1:$L(Default,"`") If $P($P(Default,"`",I),";",2)=DagNr Set VerzW=$P(Default,"`",I) Quit ;picking op dag voor verzending + If VerzW="" For I=1:1:$L(Default,"`") If $P($P(Default,"`",I),";",2)=DagNrVoorwerken Set VerzW=$P(Default,"`",I) Quit ; 1 dag voorwerken? + ;Set:VerzW="" VerzW="OD"_";"_DagNr ;-> dit was helemaal fout ("OD" op zich bestaat niet (meer) ) + Set:VerzW="" VerzW=$p(Default,"`",1) ;1e verzendwijze van order, betere fallback dan 'OD' Quit VerzW ; NOORDS(KLNr)