public static HSShipEstimate ApplyFlatRateShippingOnEstimate(HSShipEstimate estimate, HSOrderWorksheet orderWorksheet) { var supplierID = orderWorksheet.LineItems.First(li => li.ID == estimate.ShipEstimateItems.FirstOrDefault()?.LineItemID).SupplierID; var supplierLineItems = orderWorksheet.LineItems.Where(li => li.SupplierID == supplierID); var supplierSubTotal = supplierLineItems.Select(li => li.LineSubtotal).Sum(); var qualifiesForFlatRateShipping = supplierSubTotal > .01M && estimate.ShipMethods.Any(method => method.Name.Contains("GROUND")); if (qualifiesForFlatRateShipping) { estimate.ShipMethods = estimate.ShipMethods .Where(method => method.Name.Contains("GROUND")) // flat rate shipping only applies to ground shipping methods .Select(method => ApplyFlatRateShippingOnShipmethod(method, supplierSubTotal)) .ToList(); } return(estimate); }
public static HSShipEstimate FilterDownFedexShippingRates(HSShipEstimate estimate) { estimate.ShipMethods = estimate.ShipMethods.Where(method => (method.ID != null && method.ID.Contains("FREE_SHIPPING")) || method?.ID == ShippingConstants.NoRatesID || method?.xp?.Carrier == "USPS" || method.Name == "FEDEX_GROUND" || method.Name == "FEDEX_2_DAY" || method.Name == "STANDARD_OVERNIGHT").ToList(); return(estimate); }