1 APPS.MAG.UglyPickingService 0 Deze moet overschreven worden en mag geen super aanroepen, anders krijg je een framestack error. 1 1 %Status BonNr:%Integer 1 BonNr:%Integer APPS.MAG.UGLYPicking.dto.Bon DeviceNaam:%String MagazijnID:APPS.MAG.UGLYPicking.enu.Magazijn APPS.MAG.UGLYPicking.dto.MagazijnData MagazijnID:APPS.MAG.UGLYPicking.enu.Magazijn APPS.MAG.UGLYPicking.dto.Bon MagazijnID:APPS.MAG.UGLYPicking.enu.Magazijn APPS.MAG.UGLYPicking.dto.Bonnen BonNr:%Integer 1 APPS.MAG.UGLYPicking.dto.Bon APPS.MAG.UGLYPicking.dto.Magazijnen APPS.MAG.UGLYPicking.dto.Sessies BonNr:%String,ProductID:%String,PalletID:%String APPS.MAG.UGLYPicking.dto.PalletPickingOpdracht 1 { set AantalInVerpakking = rsVerpakkingen.Get("GrootVerpakking") set dtoInhoud = ..BuildInhoud(AantalInVerpakking,.AantalTePicken,.AantalResterend) set dtoPalletPickingOpdracht.GrootVerpakking = dtoInhoud } if rsVerpakkingen.Get("NormaleVerpakking")>1 { set AantalInVerpakking = rsVerpakkingen.Get("NormaleVerpakking") set dtoInhoud = ..BuildInhoud(AantalInVerpakking,.AantalTePicken,.AantalResterend) set dtoPalletPickingOpdracht.NormaalVerpakking = dtoInhoud } } set dtoInhoud=..BuildInhoud(1,.AantalTePicken,.AantalResterend) set dtoPalletPickingOpdracht.StukVerpakking = dtoInhoud quit dtoPalletPickingOpdracht ]]> BonNr:%String,ProductID:%String,PalletID:%String 1 %String AantalInVerpakking:%Integer,AantalTePicken:%Integer,AantalResterend:%Integer 1 APPS.MAG.UGLYPicking.dto.Inhoud BonNr:%Integer,MagazijnID:APPS.MAG.UGLYPicking.enu.Magazijn APPS.MAG.UGLYPicking.dto.ProductLijnen Aantal:%Integer,ProductID:%Integer,MagazijnID:APPS.MAG.UGLYPicking.enu.Magazijn APPS.MAG.UGLYPicking.dto.ProductLijn BonNr:%Integer,MagazijnID:APPS.MAG.UGLYPicking.enu.Magazijn BonNr:%Integer,ProductLijn:APPS.MAG.UGLYPicking.dto.ProductLijn,NieuwReservatieAantal:%Integer BonNr:%Integer 0)") Do ResultSet.Execute(BonNr) While (ResultSet.Next()) { Set InventoryID = ResultSet.Data("Inventory") Set AantalGereserveerd = ResultSet.Data("AantalTePicken") Do MagazijnenArray.SetAt("",ResultSet.Data("Magazijn")) Set Result = ##class(EWMS.Inventory).RollbackReservation(InventoryID,AantalGereserveerd) If (Result '= "") { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("Kon de huidige bon niet stoppen, probleem bij het terugdraaien van de reservaties in de EWMS databank: "_Result)) } } Do ResultSet.Close() Set MagazijnenIterator = ##class(TECH.ListIterator).%New(MagazijnenArray) While (MagazijnenIterator.HasNext()) { Do MagazijnenIterator.Next() Set Magazijn = MagazijnenIterator.Key() Set Status=##class(Flow.OrderWMS.PalletReservatie).DeleteReservation(BonNr,Magazijn) If $$$ISERR(Status) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("Kon de huidige bon niet stoppen, probleem bij het terugdraaien van de palletreservaties: "_$$ParseStatus^vhLib(Status))) } } Do Sessie.ZetGebruiktBonNr("") Set Status = Sessie.%Save() If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de bon niet stoppen omdat de sessie niet kon worden opgeslagen!",Status)) } ]]> BonNr:%Integer,UitstelOptie:APPS.MAG.UGLYPicking.enu.UitstelOptie %TimeStamp GepickedProduct:APPS.MAG.UGLYPicking.dto.GepickedProduct APPS.MAG.UGLYPicking.dto.PickingResultaat PalletReservatie.Inventory.QtyPcs { do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.InvalidInputException).%New("Het te picken aantal ("_AantalTePicken_") is nu groter dan het aantal beschikbaar op de pallet ("_PalletResObj.Inventory.QtyPcs_").")) } ;Pallet volledig picken? If PalletReservatie.Inventory.QtyPcs-AantalTePicken=0 { ;Set:('..IgnoreCCWhenFullPick) dtoPickingResultaat.CycleCountUitvoeren=1 ;Indien Ignore-flag niet op 0->C/C triggeren } ;do PalletReservatie.%Close() set PalletReservatie = "" if GepickedProduct.Charges.Count() > 0 { ;$$$WriteToLog("*** RegisterORDWChargeTrace ***") set itCharges = ##class(TECH.ListIterator).%New(GepickedProduct.Charges) set errRegisterCharges = "" while itCharges.HasNext() && '$length(errRegisterCharges) { set ChargeInfo = itCharges.Next() ;$$$WriteToLog("- ConsNr: "_..ConsNr_" - Magazijn: "_..Magazijn_" - ProdNr: "_..ProductNr_" - Qty: "_ChargeQty_" - ChargeID: "_ChargeID) set errRegisterCharges = ##class(BL.ProdHist.ChargeTrace).RegisterORDWChargeTrace(GepickedProduct.BonNr,GepickedProduct.Magazijn,GepickProduct.ProductID,ChargeInfo.Aantal,ChargeInfo.ChargeID,.varlbAssocChargeAantal) ;$$$WriteToLog(" ChargeTraceAantalIDs => "_$$LCVT^vhLib(varlbAssocChargeAantal)) } if $length(errRegisterCharges) { do dtoPickingResultaat.Waarschuwingen.Insert("Fout tijdens vastleggen ChargeIDs: "_errRegisterCharges_".") } else { ;$$$WriteToLog("RegisterChargeTrace success") } } set errCommitReservation=##class(Flow.OrderWMS.PalletReservatie).CommitReservation(PalletReservatieID) if $length(errCommitReservation) { do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.InvalidInputException).%New(errCommitReservation)) } ;Mogelijk is AantalTePicken <> OrigAantal omdat met de mogelijkheid heeft het aantal te wijzigen ;in deze form, om de reservatie dan correct weg te halen moet het originele aantal worden ;opgegeven. Stel QtyOrig=30, dan is QtyOrigRes=30, u verandert het aantal in 10. U drukt op de ;button 'klaar'. Deze zal een reservatie van slechts 10 weghalen indien u niet met CommitPicking ;het reservatie-aantal opgeeft. Dan neemt deze gewoon de nieuwe Qty=10. Dwz dat er nog 20 gereserveerd ;blijven, terwijl deze helemaal ter beschikking zijn van de gebruiker. Dus wij geven OrigAantal (=30) ;mee aan CommitPicking: set errCommitPicking=##class(EWMS.Inventory).CommitPicking(InventoryID,LocationsID,AantalTePicken,OrigAantal,GepickedProduct.BonNr) if $length(errCommitPicking) { do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.InvalidInputException).%New(errCommitPicking)) } ; Afdrukken van etiket in dien nod ;Do:(..AskForPrintPalletEtiket) ..PrintPalletEtiket(..ConsNr,1,..Magazijn) quit dtoPickingResultaat ]]> BonNr:%Integer %Boolean 1 APPS.MAG.UGLYPicking.impl.Sessie BonNr:%Integer,MagazijnID:APPS.MAG.UGLYPicking.enu.Magazijn,ProductID:%String