Index: EWORDS.mac.rou =================================================================== diff -u -r48164 -r48168 --- EWORDS.mac.rou (.../EWORDS.mac.rou) (revision 48164) +++ EWORDS.mac.rou (.../EWORDS.mac.rou) (revision 48168) @@ -468,7 +468,7 @@ New R,Ok,Count,VerzW,VerzDat,DOutDate,DOutTime,VerzZ,LevAdr,CONSNr,Send,ORDNr,Check,Rembours,ChkBeletDone,OLU,LijnRec,ReturnLocal New PickingOpdrachtInfo, PickingOpdrachtInfoLijst, PickingOpdrachtInfoIterator, FilterIterator - Set Ok=0 + Set Ok = $$$False If $D(^HULP(%J,KLNr,"M","A")) { // Alle onderstaande code 2x uitvoeren: 1x voor ORGALUX, 1x voor niet-ORGALUX. @@ -478,108 +478,108 @@ If Ok,KLNr'=$$$KlantHalux Do AnderTransport^EWORDS5(%J,KLNr) ; altijd uitvoeren niet afhankelijk van NoAsk param, niet voor Halux. If Ok Set Ok=$G(NoAsk) Set:'Ok Ok=$$^vhTXTPOP("EWORDS","SAVE") - Quit:'Ok - - Set R=$G(^HULP(%J,KLNr,"V")) - Set DOutDate=$P($P(R,D,2),","),DOutTime=$P(R,D,3),VerzZ=$P(R,D,4),VerzDat=$P(R,D,5) - Set ORDNr=$O(^HULP(%J,KLNr,"M","A","")) - Set VerzW = ##class(BL.Legacy.EWORDS.Save).GeefVerzendWijze(.KLNr, ORDNr, R) - - // 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() - - For { - Set OLU=$O(^HULP(%J,KLNr,"M","A",ORDNr,OLU)) - Quit:OLU="" + If (Ok) { + Set R=$G(^HULP(%J,KLNr,"V")) + Set DOutDate=$P($P(R,D,2),","),DOutTime=$P(R,D,3),VerzZ=$P(R,D,4),VerzDat=$P(R,D,5) + Set ORDNr=$O(^HULP(%J,KLNr,"M","A","")) + Set VerzW = ##class(BL.Legacy.EWORDS.Save).GeefVerzendWijze(.KLNr, ORDNr, R) - 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 + // 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() - If (AantalVoorBackOrder > 0) { - // gebruik de BoLevWk indien ingevuld - If $$$Not($Piece(LijnRec, "\", 4) = "") { - Set LeverDatum = $Piece(LijnRec, "\", 4) + 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) + } + + 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 } - 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) + // Alle bestaande ^HULP-nodes voor opgegeven KlantNummer en OrderNummer verwijderen + Kill ^HULP(%J, KLNr, "M", "A", ORDNr) - // ^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) - - If 'DOutTime do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("DOutTime mag niet null zijn")) - - Set LevAdr=^HULP(%J,KLNr,"C","LA") - Set FilterIterator = ##class(TECH.ListIterator).%New(##class(BL.Legacy.EWORDS.Save).GeefFilters()) - - While (FilterIterator.HasNext()) { - Set CONSNr = $$GETNUM^FLOW("KUL","KU1") - Set PickingOpdrachtInfoIterator = ##class(BL.Legacy.EWORDS.PickingOpdrachtInfoIterator).%New(PickingOpdrachtInfoLijst, FilterIterator.Next()) + If 'DOutTime do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("DOutTime mag niet null zijn")) - // Enkel uitvoeren als er PickingOpdrachten zijn die voldoen aan de Filter - If (PickingOpdrachtInfoIterator.HasNext()) { - While (PickingOpdrachtInfoIterator.HasNext()) { - Set PickingOpdrachtInfo = PickingOpdrachtInfoIterator.Next() - Set ^HULP(%J, KLNr, "M", "A", PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer()) = PickingOpdrachtInfo.GeefData() - } + Set LevAdr=^HULP(%J,KLNr,"C","LA") + Set FilterIterator = ##class(TECH.ListIterator).%New(##class(BL.Legacy.EWORDS.Save).GeefFilters()) - Do BLDCONS^EWORDS2(KLNr,$NA(^HULP(%J,KLNr,"M")),CONSNr,$P(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) - Do VERWERK^EWORDSS(CONSNr) ; Eventueel opsplitsen in groepen + While (FilterIterator.HasNext()) { + Set CONSNr = $$GETNUM^FLOW("KUL","KU1") + Set PickingOpdrachtInfoIterator = ##class(BL.Legacy.EWORDS.PickingOpdrachtInfoIterator).%New(PickingOpdrachtInfoLijst, FilterIterator.Next()) - 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) - - Quit:$P(R,D,20)="K" Quit:$P(R,D,20)="B" Quit:$P(R,D,20)="C" Quit:ChkBeletDone="B" - - Set:ChkBeletDone="" Check=$$CHECK^EWORDS3(CONSNr,1),Rembours=$P(Check,D,2) - If ChkBeletDone="",'Check!Rembours Do BELET^EWORDS3(CONSNr) Quit - - Quit:'$$MagazijnBeschikbaar(CONSNr) - - Set Send=$S($G(DOutSend)="L":0,1:1) - - If Send,DOutDate>$H { - Set Send=$S(DOutSend="V":1,1:"") - Set:Send="" Send=$$^vhTXTPOP("EWORDS","SENDWMS",,$$EXTNUM^vhLib.DataTypes(CONSNr,0,".",0),$$EXTDATE^vhLib.DataTypes(DOutDate))="V" + // Enkel uitvoeren als er PickingOpdrachten zijn die voldoen aan de Filter + If (PickingOpdrachtInfoIterator.HasNext()) { + While (PickingOpdrachtInfoIterator.HasNext()) { + Set PickingOpdrachtInfo = PickingOpdrachtInfoIterator.Next() + Set ^HULP(%J, KLNr, "M", "A", PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer()) = PickingOpdrachtInfo.GeefData() } + + Do BLDCONS^EWORDS2(KLNr,$NA(^HULP(%J,KLNr,"M")),CONSNr,$P(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) + Do VERWERK^EWORDSS(CONSNr) ; Eventueel opsplitsen in groepen - If Send { - ; Doorsturen naar WMS - Set Send=$$WMSACTIV^EWRECS() - Do:Send SEND^EWORDSW(CONSNr) + 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) + + Quit:$P(R,D,20)="K" Quit:$P(R,D,20)="B" Quit:$P(R,D,20)="C" Quit:ChkBeletDone="B" + + Set:ChkBeletDone="" Check=$$CHECK^EWORDS3(CONSNr,1),Rembours=$P(Check,D,2) + If ChkBeletDone="",'Check!Rembours Do BELET^EWORDS3(CONSNr) Quit + + Quit:'$$MagazijnBeschikbaar(CONSNr) + + Set Send=$S($G(DOutSend)="L":0,1:1) + + If Send,DOutDate>$H { + Set Send=$S(DOutSend="V":1,1:"") + Set:Send="" Send=$$^vhTXTPOP("EWORDS","SENDWMS",,$$EXTNUM^vhLib.DataTypes(CONSNr,0,".",0),$$EXTDATE^vhLib.DataTypes(DOutDate))="V" + } + + If Send { + ; Doorsturen naar WMS + Set Send=$$WMSACTIV^EWRECS() + Do:Send SEND^EWORDSW(CONSNr) + } } } + + Do PickingOpdrachtInfoIterator.Reset() + + While (PickingOpdrachtInfoIterator.HasNext()) { + Set PickingOpdrachtInfo = PickingOpdrachtInfoIterator.Next() + Kill ^HULP(%J, KLNr, "M", "A", PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer()) + } } - Do PickingOpdrachtInfoIterator.Reset() - - While (PickingOpdrachtInfoIterator.HasNext()) { - Set PickingOpdrachtInfo = PickingOpdrachtInfoIterator.Next() - Kill ^HULP(%J, KLNr, "M", "A", PickingOpdrachtInfo.GeefOrderNummer(), PickingOpdrachtInfo.GeefOrderLijnNummer()) - } + Kill ^HULP(%J,KLNr,"C") } - - Kill ^HULP(%J,KLNr,"C") } Quit Ok