NMFC Freight Class Changes Coming In July

The NMFTA is changing their NMFC freight classes in July, with the goal of making freight classes more accurate and less complex. It seems they’re putting a larger focus on density.

We’ve added a Part.NMFC_c UD field to pass to our freight program. We’ll need to update that, along with the changed BOL Class.

It’s really hard to figure out LTL shipment density with the variety of parts customers order from us. Some are in boxes (easy), and others are on skids. Boxes can be added to the skid too…

Is anyone else dealing with this? How are you doing it?

2 Likes

Thanks for posting this - just came across a problem with our NMFC values this morning. It’s likely been wrong since we went live but that’s neither here nor there. We had some custom BOL work done that may have been hardcoded to a specific NMFC code/class.

1 Like

Classic

Thanks Andris, we had to deal with this last year for our products. Wonder what changes are in store now.

Happy Joy GIFs - Find & Share on GIPHY

1 Like

I coded this last year and I think it gets the correct density and class for us. It has not been used much as QS has an issue with phantom pallets and FedEx LTL that hopefully will be fixed when the move to the rest api.

/* calc density */

var frtClass = string.Empty;

foreach (var ttShipHeadRow in ds.ShipHead.Where(ttShipHead_Row => ttShipHead_Row.Company == Session.CompanyID))
{

    if(ttShipHeadRow.Weight == 0m || ttShipHeadRow.PkgLength == 0m || ttShipHeadRow.PkgWidth == 0m || ttShipHeadRow.PkgHeight == 0m)
    {
        string InfoMsg = $"Please enter Weight {ttShipHeadRow.Weight:n2} and Pallet (L {ttShipHeadRow.PkgLength:n2} /W {ttShipHeadRow.PkgWidth:n2} /H {ttShipHeadRow.PkgHeight:n2}) for Density and Freight Class calculation";
        
    this.PublishInfoMessage(InfoMsg, Ice.Common.BusinessObjectMessageType.Information, Ice.Bpm.InfoMessageDisplayMode.Individual, "FirstVar","SecondVar");
    }
    else
    {
    decimal CUFt = ttShipHeadRow.PkgLength * ttShipHeadRow.PkgWidth * ttShipHeadRow.PkgHeight / 1728;
    
    decimal density = ttShipHeadRow.Weight / CUFt;
    
    
    if(density > 50m)
      frtClass = "50";
     
    if(density > 35m && density <= 50m)
      frtClass = "55";
    
    if(density > 30m && density <= 35m)
      frtClass = "60"; 

    if(density > 22.5m && density <= 30m)
      frtClass = "65"; 

    if(density > 15m && density <= 22.5m)
      frtClass = "70"; 

    if(density > 13.5m && density <= 15m)
      frtClass = "77.5"; 

    if(density > 12m && density <= 13.5m)
      frtClass = "85"; 

    if(density > 10.5m && density <= 12m)
      frtClass = "92.5"; 

    if(density > 9m && density <= 10.5m)
      frtClass = "100"; 

    if(density > 8m && density <= 9m)
      frtClass = "110"; 

    if(density > 7m && density <= 8m)
      frtClass = "125"; 

    if(density > 6m && density <= 7m)
      frtClass = "150"; 

    if(density > 5m && density <= 6m)
      frtClass = "175"; 

    if(density > 4m && density <= 5m)
      frtClass = "200"; 

    if(density > 3m && density <= 4m)
      frtClass = "250"; 

    if(density > 2m && density <= 3m)
      frtClass = "300"; 

    if(density > 1m && density <= 2m)
      frtClass = "400"; 

    if(density < 1m)
      frtClass = "500"; 

    ttShipHeadRow.PkgClass = frtClass;
    ttShipHeadRow.SetUDField<decimal>("Density_c",density);
  
  }


}
2 Likes

Nice…I gotta check with our consultants on this at some point, they essentially built us a custom VICS BOL that matches up to some of the retailer requirements we have to meet (another case of having a standard become non-standard).

@gpayne - Thanks for sharing! That’s fantastic. We’ll see how the new classes match up to the existing ones.

1 Like