public virtual SortedItem CreateSortedItem(string[] inputs, int weight) { // SortedItem sortedItem = Self.NewSortedItem(); try { ArgixTrace.WriteLine(new TraceMessage("Determine assignment...", AppLib.EVENTLOGNAME, LogLevel.Debug, "Brain ")); DetermineAssignment(inputs, sortedItem); ArgixTrace.WriteLine(new TraceMessage("Get inbound label with data...", AppLib.EVENTLOGNAME, LogLevel.Debug, "Brain ")); InboundLabel label = getInboundLabelWithData(sortedItem, inputs); sortedItem.CartonNumber = label.GetElementValue("CARTON"); if (!label.IsDuplicateElementAllowed("CARTON")) { Self.DuplicateCartonValidation(sortedItem); } ArgixTrace.WriteLine(new TraceMessage("Determine destination and rounting...", AppLib.EVENTLOGNAME, LogLevel.Debug, "Brain ")); DetermineDestinationAndRounting(sortedItem, label); if (weight == 0) { sortedItem.ThrowException(new ZeroWeightException()); } if (weight > SortedItem.WeightMax) { sortedItem.ThrowException(new OverWeightException(weight)); } sortedItem.Weight = weight; sortedItem.ApplyOutboundLabel(); } catch (Exception ex) { if (!sortedItem.IsError()) { sortedItem.SortException = new HaveNoIdeaWhatItIsException(ex); } sortedItem.ApplyOutboundLabel(); //Apply error label } return(sortedItem); }
internal override void DetermineDestinationAndRounting(SortedItem sortedItem, InboundLabel label) { // string inputString = label.GetElementValue("STORE"); sortedItem.CartonNumber = label.GetElementValue("CARTON"); sortedItem.PONumber = label.GetElementValue("PO"); sortedItem.TrackingNumber = ""; string shipOverride = (ShipOverride.Length > 0 ? ShipOverride : label.GetElementValue("OSOVERRIDE")); try { sortedItem.SpecialAgent = SortFactory.CreateSpecialAgent(sortedItem.Client.Number, sortedItem.Client.Division, shipOverride); ArgixTrace.WriteLine(new TraceMessage("Special Agent: " + sortedItem.SpecialAgent.Type, AppLib.EVENTLOGNAME, LogLevel.Debug, "Brain ")); //sortedItem.DestinationRouting = SortFactory.CreateDestinationRoutingManifestX(sortedItem.Client.Number, sortedItem.Client.Division, sortedItem.Freight.Shipper.NUMBER, Self.Station.TerminalID.ToString().PadLeft(2, '0'), sortedItem.Freight.FreightID, inputString, sortedItem.SpecialAgent.ZONE_CODE.Trim(), sortedItem.CartonNumber, !label.IsDuplicateElementAllowed("CARTON")); sortedItem.DestinationRouting = CreateDestinationRoutingManifest(sortedItem, inputString, !label.IsDuplicateElementAllowed("CARTON")); if (sortedItem.DestinationRouting.ManifestCartonNumber.Length > 0) { sortedItem.CartonNumber = sortedItem.DestinationRouting.ManifestCartonNumber; } if (sortedItem.DestinationRouting.ManifestPONumber.Length > 0) { sortedItem.PONumber = sortedItem.DestinationRouting.ManifestPONumber; } if (sortedItem.DestinationRouting.ManifestTrackingNumber.Length > 0) { sortedItem.TrackingNumber = sortedItem.DestinationRouting.ManifestTrackingNumber; } if (sortedItem.SpecialAgent.IsDefault) { sortedItem.SpecialAgent = SortFactory.CreateSpecialAgentByZone(sortedItem.Client.Number, sortedItem.Client.Division, sortedItem.DestinationRouting.ZoneCode.Trim()); } ArgixTrace.WriteLine(new TraceMessage("Special Agent: " + sortedItem.SpecialAgent.Type, AppLib.EVENTLOGNAME, LogLevel.Debug, "Brain ")); if (!UPSAllowed && sortedItem.SpecialAgent.Type == "UPSSpecialAgent") { sortedItem.SpecialAgent = null; throw new ApplicationException("UPS processing disabled."); } string trackingNum = sortedItem.SpecialAgent.MakeTrackingNumber(sortedItem.DestinationRouting.OSSequence); if (trackingNum.Trim().Length > 0) { sortedItem.TrackingNumber = trackingNum; } sortedItem.LabelTemplate = SortFactory.CreateOBLabelTemplate(sortedItem.DestinationRouting.OutboundLabelType, Self.Station.PrinterType); } catch (Exception ex) { sortedItem.ThrowException(new DestinationRoutingException(ex)); } }