Exemple #1
0
        protected string GetTrackingUrl(object dataItem)
        {
            TrackingNumber trackingNumber = (TrackingNumber)dataItem;

            if (trackingNumber.ShipGateway != null)
            {
                IShippingProvider provider = trackingNumber.ShipGateway.GetProviderInstance();
                TrackingSummary   summary  = provider.GetTrackingSummary(trackingNumber);
                if (summary != null)
                {
                    // TRACKING DETAILS FOUND
                    if (summary.TrackingResultType == TrackingResultType.InlineDetails)
                    {
                        //send to view tracking page
                        return(string.Format("MyTrackingInfo.aspx?TrackingNumberId={0}", trackingNumber.Id.ToString()));
                    }
                    else if (summary.TrackingResultType == TrackingResultType.ExternalLink)
                    {
                        return(summary.TrackingLink);
                    }
                }
            }
            return(string.Empty);
        }
Exemple #2
0
 public override TrackingSummary GetTrackingSummary(TrackingNumber trackingNumber)
 {
     throw new NotImplementedException("Tracking Support Not Available");
 }
Exemple #3
0
 public void DeliverOrder(string googleOrderNumber, TrackingNumber number)
 {
     DeliverOrder(googleOrderNumber, number, true);
 }
Exemple #4
0
        public void DeliverOrder(string googleOrderNumber, TrackingNumber number, bool sendEmail)
        {
            string trNumber = number == null ? string.Empty : number.TrackingNumberData;

            AC.AcNotifier.DeliverOrder(this, googleOrderNumber, AC.AcHelper.GetGCCarrierName(number), trNumber, sendEmail);
        }
        private void Ship(bool requestTracking)
        {
            //WE HAVE TO LOOK FOR ANY ITEMS NOT BEING SHIPPED
            //BUILD A DICTIONARY OF QUANTITY TO SHIP
            bool itemFound        = false;
            bool isPartial        = false;
            bool quantityExceeded = false;
            Dictionary <int, short> quantities = new Dictionary <int, short>();

            foreach (GridViewRow row in ShipmentItems.Rows)
            {
                HiddenField hf          = (HiddenField)row.FindControl("Id");
                int         orderItemId = AlwaysConvert.ToInt(hf.Value);
                int         index       = _OrderShipment.OrderItems.IndexOf(orderItemId);
                if (index > -1)
                {
                    TextBox tb  = (TextBox)row.FindControl("Quantity");
                    short   qty = AlwaysConvert.ToInt16(tb.Text);
                    itemFound        = itemFound || (qty > 0);
                    isPartial        = isPartial || (qty < _OrderShipment.OrderItems[index].Quantity);
                    quantityExceeded = quantityExceeded || (qty > _OrderShipment.OrderItems[index].Quantity);
                    quantities.Add(orderItemId, qty);
                }
            }

            if ((itemFound) && (!quantityExceeded))
            {
                try
                {
                    // start transation to do it in single step
                    AbleContext.Current.Database.BeginTransaction();

                    //CHECK IF WE ARE NOT SHIPPING ALL OF THE ITEMS
                    if (isPartial)
                    {
                        //AT LEAST ONE ITEM MUST BE MOVED TO A NEW SHIPMENT
                        //CREATE A COPY OF THIS SHIPMENT
                        OrderShipment newShipment = _OrderShipment.Copy();
                        newShipment.Save();
                        _Order.Shipments.Add(newShipment);
                        //KEEP TRACK OF ITEMS TO REMOVE FROM THE CURRENT SHIPMENT
                        List <int> removeItems = new List <int>();
                        //LOOP THE ITEMS AND DECIDE WHICH TO PUT IN THE NEW SHIPMENT
                        foreach (OrderItem item in _OrderShipment.OrderItems)
                        {
                            int searchItemId = (AlwaysConvert.ToInt(item.ParentItemId) == 0) ? item.Id : AlwaysConvert.ToInt(item.ParentItemId);
                            if (quantities.ContainsKey(searchItemId))
                            {
                                short shipQty = quantities[searchItemId];
                                if (shipQty != item.Quantity)
                                {
                                    if (shipQty > 0)
                                    {
                                        //WE HAVE TO SPLIT THIS ITEM
                                        OrderItem newItem = OrderItem.Copy(item.Id, true);
                                        newItem.Quantity        = (short)(item.Quantity - shipQty);
                                        newItem.OrderShipmentId = newShipment.Id;
                                        newItem.Save();
                                        newShipment.OrderItems.Add(newItem);
                                        //UPDATE THE CURRENT ITEM
                                        item.Quantity = shipQty;
                                        item.Save();
                                    }
                                    else
                                    {
                                        //THIS ITEM JUST NEEDS TO BE MOVED
                                        item.OrderShipmentId = newShipment.Id;
                                        item.Save();
                                        newShipment.OrderItems.Add(item);
                                        removeItems.Add(item.Id);
                                    }
                                }
                            }
                        }
                        //REMOVE ANY ITEMS THAT WERE MOVED TO ANOTHER SHIPMENT
                        foreach (int id in removeItems)
                        {
                            int delIndex = _OrderShipment.OrderItems.IndexOf(id);
                            if (delIndex > -1)
                            {
                                _OrderShipment.OrderItems.RemoveAt(delIndex);
                            }
                        }
                    }

                    //Add the Tracking Number
                    int    shipgwId     = AlwaysConvert.ToInt(ShipGateway.SelectedValue);
                    string trackingData = AddTrackingNumber.Text.Trim();
                    if (!string.IsNullOrEmpty(trackingData))
                    {
                        TrackingNumber tnum = new TrackingNumber();
                        tnum.TrackingNumberData = trackingData;
                        tnum.ShipGatewayId      = shipgwId;
                        tnum.OrderShipmentId    = _OrderShipment.Id;
                        _OrderShipment.TrackingNumbers.Add(tnum);
                    }

                    //SHIP THE CURRENT SHIPMENT
                    _OrderShipment.Ship(requestTracking, LocaleHelper.LocalNow);

                    // end transaction
                    AbleContext.Current.Database.CommitTransaction();

                    //RETURN TO SHIPMENTS PAGE
                    Response.Redirect(CancelButton.NavigateUrl, false);
                }
                catch (Exception ex)
                {
                    AbleContext.Current.Database.RollbackTransaction();
                    Logger.Error(string.Format("An error occurred while trying to confirm shipment to provider: {0}", ex.Message), ex);

                    CustomValidator shipError = new CustomValidator();
                    shipError.Text         = "*";
                    shipError.ErrorMessage = ex.Message;
                    shipError.IsValid      = false;
                    phValidation.Controls.Add(shipError);
                }
            }
            else
            {
                CustomValidator quantityError = new CustomValidator();
                if (quantityExceeded)
                {
                    quantityError.ErrorMessage = "You cannot move more than the existing quantity.";
                }
                else
                {
                    quantityError.ErrorMessage = "You must pick at least one item to move.";
                }
                quantityError.Text    = "&nbsp;";
                quantityError.IsValid = false;
                phValidation.Controls.Add(quantityError);
            }
        }
Exemple #6
0
        public override int GetHashCode()
        {
            int hashCode = 1108362053;

            if (Recipient != null)
            {
                hashCode += Recipient.GetHashCode();
            }

            if (Carrier != null)
            {
                hashCode += Carrier.GetHashCode();
            }

            if (ShippingNote != null)
            {
                hashCode += ShippingNote.GetHashCode();
            }

            if (ShippingType != null)
            {
                hashCode += ShippingType.GetHashCode();
            }

            if (TrackingNumber != null)
            {
                hashCode += TrackingNumber.GetHashCode();
            }

            if (TrackingUrl != null)
            {
                hashCode += TrackingUrl.GetHashCode();
            }

            if (PlacedAt != null)
            {
                hashCode += PlacedAt.GetHashCode();
            }

            if (InProgressAt != null)
            {
                hashCode += InProgressAt.GetHashCode();
            }

            if (PackagedAt != null)
            {
                hashCode += PackagedAt.GetHashCode();
            }

            if (ExpectedShippedAt != null)
            {
                hashCode += ExpectedShippedAt.GetHashCode();
            }

            if (ShippedAt != null)
            {
                hashCode += ShippedAt.GetHashCode();
            }

            if (CanceledAt != null)
            {
                hashCode += CanceledAt.GetHashCode();
            }

            if (CancelReason != null)
            {
                hashCode += CancelReason.GetHashCode();
            }

            if (FailedAt != null)
            {
                hashCode += FailedAt.GetHashCode();
            }

            if (FailureReason != null)
            {
                hashCode += FailureReason.GetHashCode();
            }

            return(hashCode);
        }
Exemple #7
0
        public void ShouldRemoveLeadingAndTrailingWhitespaceFromTrackingNnumber()
        {
            var result = new TrackingNumber("  ABC123 \n");

            Assert.True(result.Number == "ABC123", "Should trim result");
        }
Exemple #8
0
        public void ShouldUpcaseAndRemoveSpacesFromTrackingNumber()
        {
            var result = new TrackingNumber("abc 123 def");

            Assert.True(result.Number == "ABC123DEF", "Should return upper case number without spaces");
        }
Exemple #9
0
        public void ShouldReturnUnknownWhenGivenInvalidNumber()
        {
            var result = new TrackingNumber("101");

            Assert.True(result.TrackingTypes.Length == 0, "Should return unknown tracking type");
        }