示例#1
0
文件: brain.cs 项目: jpheary/Argix08
        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);
        }
示例#2
0
文件: brain.cs 项目: jpheary/Argix08
        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)); }
        }