public ShippingGroup Clone(bool CopyBvins) { var result = new ShippingGroup(); foreach (var li in _items) { result.Items.Add(li.Clone(CopyBvins)); } _sourceAddress.CopyTo(result.SourceAddress); _destinationAddress.CopyTo(result.DestinationAddress); result.ShippingMode = _ShippingMode; result.ShipId = string.Empty; result.Length = Length; result.Width = Width; result.Height = Height; result.Weight = Weight; result.ShipSeperately = ShipSeperately; result.GenerateDimensions(); return(result); }
public override void GenerateDimensions(ShippingGroup shippingGroup) { if (shippingGroup.Items != null) { shippingGroup.Length = 0; shippingGroup.Weight = 0; shippingGroup.Height = 0; shippingGroup.Width = 0; var dimensionsSet = false; if (shippingGroup.Items.Count == 1) { if (shippingGroup.Items[0].Quantity == 1) { shippingGroup.Length = shippingGroup.Items[0].ProductShippingLength; shippingGroup.Height = shippingGroup.Items[0].ProductShippingHeight; shippingGroup.Width = shippingGroup.Items[0].ProductShippingWidth; shippingGroup.Weight = shippingGroup.Items[0].GetTotalWeight(); dimensionsSet = true; } } decimal longestDimension = 0; decimal totalVolume = 0; if (!dimensionsSet) { for (var i = 0; i < shippingGroup.Items.Count; i++) { if (shippingGroup.Items[i].ProductShippingLength > longestDimension) { longestDimension = shippingGroup.Items[i].ProductShippingLength; } if (shippingGroup.Items[i].ProductShippingWidth > longestDimension) { longestDimension = shippingGroup.Items[i].ProductShippingWidth; } if (shippingGroup.Items[i].ProductShippingHeight * (shippingGroup.Items[i].Quantity - shippingGroup.Items[i].QuantityShipped) > longestDimension) { longestDimension = shippingGroup.Items[i].ProductShippingHeight * (shippingGroup.Items[i].Quantity - shippingGroup.Items[i].QuantityShipped); } totalVolume += (shippingGroup.Items[i].Quantity - shippingGroup.Items[i].QuantityShipped) * shippingGroup.Items[i].ProductShippingLength * shippingGroup.Items[i].ProductShippingWidth * shippingGroup.Items[i].ProductShippingHeight; shippingGroup.Weight += shippingGroup.Items[i].GetTotalWeight(); } //Estimate Package Size based on Volume shippingGroup.Length = longestDimension; if (longestDimension > 0 & totalVolume > 0) { shippingGroup.Width = (decimal)Math.Sqrt((double)(totalVolume / longestDimension)); } shippingGroup.Height = shippingGroup.Width; } if (shippingGroup.Width < 1) { shippingGroup.Width = 1; } if (shippingGroup.Height < 1) { shippingGroup.Height = 1; } if (shippingGroup.Length < 1) { shippingGroup.Length = 1; } } }