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); }
public override TrackingSummary GetTrackingSummary(TrackingNumber trackingNumber) { throw new NotImplementedException("Tracking Support Not Available"); }
public void DeliverOrder(string googleOrderNumber, TrackingNumber number) { DeliverOrder(googleOrderNumber, number, true); }
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 = " "; quantityError.IsValid = false; phValidation.Controls.Add(quantityError); } }
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); }
public void ShouldRemoveLeadingAndTrailingWhitespaceFromTrackingNnumber() { var result = new TrackingNumber(" ABC123 \n"); Assert.True(result.Number == "ABC123", "Should trim result"); }
public void ShouldUpcaseAndRemoveSpacesFromTrackingNumber() { var result = new TrackingNumber("abc 123 def"); Assert.True(result.Number == "ABC123DEF", "Should return upper case number without spaces"); }
public void ShouldReturnUnknownWhenGivenInvalidNumber() { var result = new TrackingNumber("101"); Assert.True(result.TrackingTypes.Length == 0, "Should return unknown tracking type"); }